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.

75 lines
1.2 KiB

  1. package Database
  2. import (
  3. "log"
  4. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models"
  5. "gorm.io/driver/postgres"
  6. "gorm.io/gorm"
  7. )
  8. const (
  9. dbURL = "postgres://postgres:@localhost:5432/envelope"
  10. dbTestURL = "postgres://postgres:@localhost:5432/envelope_test"
  11. )
  12. // DB db
  13. var DB *gorm.DB
  14. func getModels() []interface{} {
  15. return []interface{}{
  16. &Models.Session{},
  17. &Models.User{},
  18. &Models.FriendRequest{},
  19. &Models.MessageData{},
  20. &Models.Message{},
  21. &Models.ConversationDetail{},
  22. &Models.ConversationDetailUser{},
  23. &Models.UserConversation{},
  24. }
  25. }
  26. // Init initializes the database connection
  27. func Init() {
  28. var (
  29. model interface{}
  30. err error
  31. )
  32. log.Println("Initializing database...")
  33. DB, err = gorm.Open(postgres.Open(dbURL), &gorm.Config{})
  34. if err != nil {
  35. log.Fatalln(err)
  36. }
  37. log.Println("Running AutoMigrate...")
  38. for _, model = range getModels() {
  39. err = DB.AutoMigrate(model)
  40. if err != nil {
  41. log.Fatalln(err)
  42. }
  43. }
  44. }
  45. // InitTest initializes the test datbase
  46. func InitTest() {
  47. var (
  48. model interface{}
  49. err error
  50. )
  51. DB, err = gorm.Open(postgres.Open(dbTestURL), &gorm.Config{})
  52. if err != nil {
  53. log.Fatalln(err)
  54. }
  55. for _, model = range getModels() {
  56. DB.Migrator().DropTable(model)
  57. DB.AutoMigrate(model)
  58. }
  59. }