database.go 1.2 KB

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