Encrypted messaging app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
1.5 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. package Database
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "gorm.io/driver/postgres"
  7. "gorm.io/gorm"
  8. )
  9. const (
  10. PageSize = 20
  11. )
  12. var (
  13. dbURL string
  14. dbTestURL string
  15. )
  16. // DB db
  17. var DB *gorm.DB
  18. var models = []interface{}{
  19. &Session{},
  20. &Attachment{},
  21. &User{},
  22. &FriendRequest{},
  23. &MessageData{},
  24. &Message{},
  25. &ConversationDetail{},
  26. &ConversationDetailUser{},
  27. &UserConversation{},
  28. &DeviceToken{},
  29. &FriendRequestDeviceToken{},
  30. }
  31. // Init initializes the database connection
  32. func Init() {
  33. var (
  34. err error
  35. )
  36. log.Println("Initializing database...")
  37. dbURL = fmt.Sprintf(
  38. "postgres://%s:%s@%s:%s/%s",
  39. os.Getenv("DB_USER"),
  40. os.Getenv("DB_PASSWORD"),
  41. os.Getenv("DB_HOST"),
  42. os.Getenv("DB_PORT"),
  43. os.Getenv("DB_DATABASE"),
  44. )
  45. DB, err = gorm.Open(postgres.Open(dbURL), &gorm.Config{})
  46. if err != nil {
  47. log.Fatalln(err)
  48. }
  49. log.Println("Running AutoMigrate...")
  50. err = DB.AutoMigrate(models...)
  51. if err != nil {
  52. log.Fatalln(err)
  53. }
  54. }
  55. // InitTest initializes the test datbase
  56. func InitTest() {
  57. var (
  58. err error
  59. )
  60. dbTestURL = fmt.Sprintf(
  61. "postgres://%s:%s@%s:%s/%s",
  62. os.Getenv("DB_TESTING_USER"),
  63. os.Getenv("DB_TESTING_PASSWORD"),
  64. os.Getenv("DB_TESTING_HOST"),
  65. os.Getenv("DB_TESTING_PORT"),
  66. os.Getenv("DB_TESTING_DATABASE"),
  67. )
  68. DB, err = gorm.Open(postgres.Open(dbTestURL), &gorm.Config{})
  69. if err != nil {
  70. log.Fatalln(err)
  71. }
  72. err = DB.Migrator().DropTable(models...)
  73. if err != nil {
  74. panic(err)
  75. }
  76. err = DB.AutoMigrate(models...)
  77. if err != nil {
  78. panic(err)
  79. }
  80. }