database.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package database
  2. import (
  3. _ "embed"
  4. _ "github.com/lib/pq"
  5. _ "github.com/mattn/go-sqlite3"
  6. "go.mau.fi/util/dbutil"
  7. "maunium.net/go/maulogger/v2"
  8. "go.mau.fi/mautrix-discord/database/upgrades"
  9. )
  10. type Database struct {
  11. *dbutil.Database
  12. User *UserQuery
  13. Portal *PortalQuery
  14. Puppet *PuppetQuery
  15. Message *MessageQuery
  16. Thread *ThreadQuery
  17. Reaction *ReactionQuery
  18. Guild *GuildQuery
  19. Role *RoleQuery
  20. File *FileQuery
  21. }
  22. func New(baseDB *dbutil.Database, log maulogger.Logger) *Database {
  23. db := &Database{Database: baseDB}
  24. db.UpgradeTable = upgrades.Table
  25. db.User = &UserQuery{
  26. db: db,
  27. log: log.Sub("User"),
  28. }
  29. db.Portal = &PortalQuery{
  30. db: db,
  31. log: log.Sub("Portal"),
  32. }
  33. db.Puppet = &PuppetQuery{
  34. db: db,
  35. log: log.Sub("Puppet"),
  36. }
  37. db.Message = &MessageQuery{
  38. db: db,
  39. log: log.Sub("Message"),
  40. }
  41. db.Thread = &ThreadQuery{
  42. db: db,
  43. log: log.Sub("Thread"),
  44. }
  45. db.Reaction = &ReactionQuery{
  46. db: db,
  47. log: log.Sub("Reaction"),
  48. }
  49. db.Guild = &GuildQuery{
  50. db: db,
  51. log: log.Sub("Guild"),
  52. }
  53. db.Role = &RoleQuery{
  54. db: db,
  55. log: log.Sub("Role"),
  56. }
  57. db.File = &FileQuery{
  58. db: db,
  59. log: log.Sub("File"),
  60. }
  61. return db
  62. }
  63. func strPtr[T ~string](val T) *string {
  64. if val == "" {
  65. return nil
  66. }
  67. valStr := string(val)
  68. return &valStr
  69. }