aboutsummaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-04-06 08:50:11 +0530
committerBobby <[email protected]>2025-04-06 08:50:11 +0530
commitd706bd33c904c0f94c12aca17aae0fac82651576 (patch)
tree2dd554dcc0757991d4232cff60cdf2d1d8e734c1 /database
parenta6de03acda17184f38103c2782ded6fb0ab768de (diff)
downloadmetachan-d706bd33c904c0f94c12aca17aae0fac82651576.tar.xz
metachan-d706bd33c904c0f94c12aca17aae0fac82651576.zip
syncing anime lists via fribb mappings
Diffstat (limited to 'database')
-rw-r--r--database/database.go55
-rw-r--r--database/migrate.go27
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,
+ })
+ }
+}