package Database import ( "fmt" "log" "os" "gorm.io/driver/postgres" "gorm.io/gorm" ) const ( PageSize = 20 ) var ( dbURL string dbTestURL string ) // DB db var DB *gorm.DB var models = []interface{}{ &Session{}, &Attachment{}, &User{}, &FriendRequest{}, &MessageData{}, &Message{}, &ConversationDetail{}, &ConversationDetailUser{}, &UserConversation{}, &DeviceToken{}, &FriendRequestDeviceToken{}, } // Init initializes the database connection func Init() { var ( err error ) log.Println("Initializing database...") dbURL = fmt.Sprintf( "postgres://%s:%s@%s:%s/%s", os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_DATABASE"), ) DB, err = gorm.Open(postgres.Open(dbURL), &gorm.Config{}) if err != nil { log.Fatalln(err) } log.Println("Running AutoMigrate...") err = DB.AutoMigrate(models...) if err != nil { log.Fatalln(err) } } // InitTest initializes the test datbase func InitTest() { var ( err error ) dbTestURL = fmt.Sprintf( "postgres://%s:%s@%s:%s/%s", os.Getenv("DB_TESTING_USER"), os.Getenv("DB_TESTING_PASSWORD"), os.Getenv("DB_TESTING_HOST"), os.Getenv("DB_TESTING_PORT"), os.Getenv("DB_TESTING_DATABASE"), ) DB, err = gorm.Open(postgres.Open(dbTestURL), &gorm.Config{}) if err != nil { log.Fatalln(err) } err = DB.Migrator().DropTable(models...) if err != nil { panic(err) } err = DB.AutoMigrate(models...) if err != nil { panic(err) } }