diff options
Diffstat (limited to 'database/database.go')
| -rw-r--r-- | database/database.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/database/database.go b/database/database.go new file mode 100644 index 0000000..500373e --- /dev/null +++ b/database/database.go @@ -0,0 +1,50 @@ +package database + +import ( + "cafe/config" + "fmt" + "log" + + "gorm.io/driver/postgres" + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +var DB *gorm.DB + +func init() { + var err error + + DSN := fmt.Sprintf("host=%s port=%d user=%s dbname=%s sslmode=%s", + config.Database.Host, + config.Database.Port, + config.Database.Username, + config.Database.Name, + config.Database.SSLMode, + ) + + if config.Database.Password != "" { + DSN += fmt.Sprintf(" password=%s", config.Database.Password) + } + + loglevel := logger.Silent + if config.Server.DevMode { + loglevel = logger.Info + } + + dialector := postgres.Open(DSN) + + DB, err = gorm.Open(dialector, &gorm.Config{ + Logger: logger.Default.LogMode(loglevel), + }) + + if err != nil { + log.Fatalf("failed to connect to database: %v", err) + } + + if err = migrate(); err != nil { + log.Fatalf("failed to migrate database: %v", err) + } + + log.Println("database connection established") +} |
