diff options
Diffstat (limited to 'database/database.go')
| -rw-r--r-- | database/database.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/database/database.go b/database/database.go new file mode 100644 index 0000000..27b99eb --- /dev/null +++ b/database/database.go @@ -0,0 +1,36 @@ +package database + +import ( + "dove/messages" + "dove/utils/logger" + + "gorm.io/driver/sqlite" + "gorm.io/gorm" +) + +var DB *gorm.DB + +func init() { + databaseDSN := resolveDatabasePath() + dialector := sqlite.Open(databaseDSN) + + var connectionError error + DB, connectionError = gorm.Open(dialector, &gorm.Config{ + Logger: resolveGORMLogLevel(), + }) + + if connectionError != nil { + logger.Fatalf(LOG_PREFIX, messages.DatabaseConnectionFailed, connectionError) + } + + sqlDB, poolError := DB.DB() + if poolError != nil { + logger.Fatalf(LOG_PREFIX, messages.DatabasePoolConfigFailed, poolError) + } + + sqlDB.SetMaxOpenConns(MAX_OPEN_CONNECTIONS) + sqlDB.SetMaxIdleConns(MAX_IDLE_CONNECTIONS) + sqlDB.SetConnMaxLifetime(MAX_CONNECTION_LIFETIME) + + logger.Successf(LOG_PREFIX, messages.DatabaseConnected, databaseDSN) +} |
