diff options
Diffstat (limited to 'database/database.go')
| -rw-r--r-- | database/database.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/database/database.go b/database/database.go new file mode 100644 index 0000000..89bbddc --- /dev/null +++ b/database/database.go @@ -0,0 +1,55 @@ +package database + +import ( + "fmt" + "metachan/config" + "metachan/types" + "metachan/utils/logger" + + "gorm.io/driver/mysql" + "gorm.io/driver/postgres" + "gorm.io/driver/sqlite" + "gorm.io/driver/sqlserver" + "gorm.io/gorm" + gormlogger "gorm.io/gorm/logger" +) + +var DB *gorm.DB + +func init() { + var dialector gorm.Dialector + + switch config.Config.DatabaseDriver { + case types.Postgres: + dialector = postgres.Open(config.Config.DataSourceName) + case types.SQLite: + dialector = sqlite.Open(config.Config.DataSourceName) + case types.MySQL: + dialector = mysql.Open(config.Config.DataSourceName) + case types.SQLServer: + dialector = sqlserver.Open(config.Config.DataSourceName) + default: + logger.Log(fmt.Sprintf("Invalid database driver: %s", config.Config.DatabaseDriver), types.LogOptions{ + Prefix: "Database", + Level: types.Error, + Fatal: true, + }) + } + + var err error + DB, err = gorm.Open(dialector, &gorm.Config{ + Logger: gormlogger.Default.LogMode(gormlogger.Silent), + }) + if err != nil { + logger.Log(fmt.Sprintf("Error connecting to database: %v", err), types.LogOptions{ + Prefix: "Database", + Level: types.Error, + Fatal: true, + }) + } else { + logger.Log("Database connection established successfully", types.LogOptions{ + Prefix: "Database", + Level: types.Success, + }) + } +} |
