diff options
| author | Bobby <[email protected]> | 2026-01-20 13:35:01 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-01-20 13:35:01 +0530 |
| commit | 61d5f45189a40621bceeb14c6646031dd15ab6c2 (patch) | |
| tree | 602c98f87d776a9088723ee3d5a27e61053cbc08 /database/database.go | |
| parent | c8d0bbb5b54f5cec3ebb245f9a21d8a94b3bd944 (diff) | |
| download | cafe-61d5f45189a40621bceeb14c6646031dd15ab6c2.tar.xz cafe-61d5f45189a40621bceeb14c6646031dd15ab6c2.zip | |
Implement database configuration and management with PostgreSQL support
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") +} |
