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.

68 lines
1.1 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. var DB *gorm.DB
  13. func GetModels() []interface{} {
  14. return []interface{}{
  15. &Models.Session{},
  16. &Models.User{},
  17. &Models.FriendRequest{},
  18. &Models.MessageData{},
  19. &Models.Message{},
  20. &Models.ConversationDetail{},
  21. &Models.UserConversation{},
  22. }
  23. }
  24. func Init() {
  25. var (
  26. model interface{}
  27. err error
  28. )
  29. log.Println("Initializing database...")
  30. DB, err = gorm.Open(postgres.Open(dbUrl), &gorm.Config{})
  31. if err != nil {
  32. log.Fatalln(err)
  33. }
  34. log.Println("Running AutoMigrate...")
  35. for _, model = range GetModels() {
  36. DB.AutoMigrate(model)
  37. }
  38. }
  39. func InitTest() {
  40. var (
  41. model interface{}
  42. err error
  43. )
  44. DB, err = gorm.Open(postgres.Open(dbTestUrl), &gorm.Config{})
  45. if err != nil {
  46. log.Fatalln(err)
  47. }
  48. for _, model = range GetModels() {
  49. DB.Migrator().DropTable(model)
  50. DB.AutoMigrate(model)
  51. }
  52. }