diff options
| author | Bobby <[email protected]> | 2025-04-06 08:50:11 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-04-06 08:50:11 +0530 |
| commit | d706bd33c904c0f94c12aca17aae0fac82651576 (patch) | |
| tree | 2dd554dcc0757991d4232cff60cdf2d1d8e734c1 /database | |
| parent | a6de03acda17184f38103c2782ded6fb0ab768de (diff) | |
| download | metachan-d706bd33c904c0f94c12aca17aae0fac82651576.tar.xz metachan-d706bd33c904c0f94c12aca17aae0fac82651576.zip | |
syncing anime lists via fribb mappings
Diffstat (limited to 'database')
| -rw-r--r-- | database/database.go | 55 | ||||
| -rw-r--r-- | database/migrate.go | 27 |
2 files changed, 82 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, + }) + } +} diff --git a/database/migrate.go b/database/migrate.go new file mode 100644 index 0000000..0f218b3 --- /dev/null +++ b/database/migrate.go @@ -0,0 +1,27 @@ +package database + +import ( + "fmt" + "metachan/entities" + "metachan/types" + "metachan/utils/logger" +) + +func AutoMigrate() { + err := DB.AutoMigrate( + &entities.TaskLog{}, + &entities.AnimeMapping{}, + ) + if err != nil { + logger.Log(fmt.Sprintf("Error during auto migration: %v", err), types.LogOptions{ + Prefix: "Database", + Level: types.Error, + Fatal: true, + }) + } else { + logger.Log("Auto migration completed successfully", types.LogOptions{ + Prefix: "Database", + Level: types.Success, + }) + } +} |
