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.

76 lines
1.2 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. "log"
  4. "git.tovijaeschke.xyz/tovi/Capsule/Backend/Models"
  5. "gorm.io/driver/postgres"
  6. "gorm.io/gorm"
  7. )
  8. const (
  9. dbURL = "postgres://postgres:password@postgres:5432/capsule"
  10. dbTestURL = "postgres://postgres:password@postgres-testing:5432/capsule-testing"
  11. PageSize = 20
  12. )
  13. // DB db
  14. var DB *gorm.DB
  15. var models = []interface{}{
  16. &Models.Session{},
  17. &Models.Attachment{},
  18. &Models.User{},
  19. &Models.FriendRequest{},
  20. &Models.MessageData{},
  21. &Models.Message{},
  22. &Models.ConversationDetail{},
  23. &Models.ConversationDetailUser{},
  24. &Models.UserConversation{},
  25. }
  26. // Init initializes the database connection
  27. func Init() {
  28. var (
  29. err error
  30. )
  31. log.Println("Initializing database...")
  32. DB, err = gorm.Open(postgres.Open(dbURL), &gorm.Config{})
  33. if err != nil {
  34. log.Fatalln(err)
  35. }
  36. log.Println("Running AutoMigrate...")
  37. err = DB.AutoMigrate(models...)
  38. if err != nil {
  39. log.Fatalln(err)
  40. }
  41. }
  42. // InitTest initializes the test datbase
  43. func InitTest() {
  44. var (
  45. err error
  46. )
  47. DB, err = gorm.Open(postgres.Open(dbTestURL), &gorm.Config{})
  48. if err != nil {
  49. log.Fatalln(err)
  50. }
  51. err = DB.Migrator().DropTable(models...)
  52. if err != nil {
  53. panic(err)
  54. }
  55. err = DB.AutoMigrate(models...)
  56. if err != nil {
  57. panic(err)
  58. }
  59. }