database.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package database
  2. import (
  3. _ "embed"
  4. _ "github.com/lib/pq"
  5. _ "github.com/mattn/go-sqlite3"
  6. "maunium.net/go/maulogger/v2"
  7. "maunium.net/go/mautrix/util/dbutil"
  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. Emoji *EmojiQuery
  19. Guild *GuildQuery
  20. Role *RoleQuery
  21. File *FileQuery
  22. }
  23. func New(baseDB *dbutil.Database, log maulogger.Logger) *Database {
  24. db := &Database{Database: baseDB}
  25. db.UpgradeTable = upgrades.Table
  26. db.User = &UserQuery{
  27. db: db,
  28. log: log.Sub("User"),
  29. }
  30. db.Portal = &PortalQuery{
  31. db: db,
  32. log: log.Sub("Portal"),
  33. }
  34. db.Puppet = &PuppetQuery{
  35. db: db,
  36. log: log.Sub("Puppet"),
  37. }
  38. db.Message = &MessageQuery{
  39. db: db,
  40. log: log.Sub("Message"),
  41. }
  42. db.Thread = &ThreadQuery{
  43. db: db,
  44. log: log.Sub("Thread"),
  45. }
  46. db.Reaction = &ReactionQuery{
  47. db: db,
  48. log: log.Sub("Reaction"),
  49. }
  50. db.Emoji = &EmojiQuery{
  51. db: db,
  52. log: log.Sub("Emoji"),
  53. }
  54. db.Guild = &GuildQuery{
  55. db: db,
  56. log: log.Sub("Guild"),
  57. }
  58. db.Role = &RoleQuery{
  59. db: db,
  60. log: log.Sub("Role"),
  61. }
  62. db.File = &FileQuery{
  63. db: db,
  64. log: log.Sub("File"),
  65. }
  66. return db
  67. }
  68. func strPtr(val string) *string {
  69. if val == "" {
  70. return nil
  71. }
  72. return &val
  73. }