diff options
| author | Bobby <[email protected]> | 2026-03-29 22:52:46 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-29 22:52:46 +0530 |
| commit | 9eb9b7f4bd552a641235764f66483e1f940fcfd9 (patch) | |
| tree | da520b923b5e6758d5457b6233dd6671fc640914 /nexus/database/database.go | |
| parent | 65a143a0871c35989b7c7ea6723d39a0585c089e (diff) | |
| download | echoes-of-vaelun-main.tar.xz echoes-of-vaelun-main.zip | |
Diffstat (limited to 'nexus/database/database.go')
| -rw-r--r-- | nexus/database/database.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/nexus/database/database.go b/nexus/database/database.go new file mode 100644 index 0000000..e00c494 --- /dev/null +++ b/nexus/database/database.go @@ -0,0 +1,49 @@ +package database
+
+import (
+ "fmt"
+ "nexus/config"
+ "nexus/utils/logger"
+
+ "gorm.io/driver/postgres"
+ "gorm.io/gorm"
+)
+
+var DB *gorm.DB
+
+func init() {
+ dsn := fmt.Sprintf(
+ "host=%s user=%s dbname=%s port=%d sslmode=%s",
+ config.Database.Host,
+ config.Database.User,
+ config.Database.Name,
+ config.Database.Port,
+ config.Database.SSLMode,
+ )
+
+ if config.Database.Password != "" {
+ dsn += fmt.Sprintf(" password=%s", config.Database.Password)
+ }
+
+ var connectionError error
+ DB, connectionError = gorm.Open(postgres.Open(dsn), &gorm.Config{
+ Logger: resolveGORMLogLevel(),
+ })
+
+ if connectionError != nil {
+ logger.Fatalf(LogPrefix, ConnectionFailed, connectionError)
+ }
+
+ sqlDB, poolError := DB.DB()
+ if poolError != nil {
+ logger.Fatalf(LogPrefix, PoolConfigFailed, poolError)
+ }
+
+ sqlDB.SetMaxOpenConns(MaxOpenConnections)
+ sqlDB.SetMaxIdleConns(MaxIdleConnections)
+ sqlDB.SetConnMaxLifetime(MaxConnectionLifetime)
+
+ logger.Successf(LogPrefix, Connected, config.Database.Name)
+
+ migrate()
+}
|
