summaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-12-19 13:07:23 +0530
committerBobby <[email protected]>2025-12-19 13:07:23 +0530
commit767297e28d47ee9cf3722054e41caa837f0e68d2 (patch)
tree24a93038b7f8d0a0106cdf918477ae1c326c54bb /database
parent2584f8d7a0eb3bc55716f78a8bba45d524252b69 (diff)
downloadlain-767297e28d47ee9cf3722054e41caa837f0e68d2.tar.xz
lain-767297e28d47ee9cf3722054e41caa837f0e68d2.zip
preferences model; db setup; types
Diffstat (limited to 'database')
-rw-r--r--database/database.go50
-rw-r--r--database/migrate.go10
2 files changed, 60 insertions, 0 deletions
diff --git a/database/database.go b/database/database.go
new file mode 100644
index 0000000..6ab02d7
--- /dev/null
+++ b/database/database.go
@@ -0,0 +1,50 @@
+package database
+
+import (
+ "fmt"
+ "lain/config"
+ "log"
+
+ "gorm.io/driver/postgres"
+ "gorm.io/gorm"
+ "gorm.io/gorm/logger"
+)
+
+var DB *gorm.DB
+
+func init() {
+ var err error
+
+ DSN := fmt.Sprintf("host=%s port=%d user=%s dbname=%s sslmode=%s",
+ config.Database.Host,
+ config.Database.Port,
+ config.Database.Username,
+ config.Database.Name,
+ config.Database.SSLMode,
+ )
+
+ if config.Database.Password != "" {
+ DSN += fmt.Sprintf(" password=%s", config.Database.Password)
+ }
+
+ loglevel := logger.Silent
+ if config.Server.DevMode {
+ loglevel = logger.Info
+ }
+
+ dialector := postgres.Open(DSN)
+
+ DB, err = gorm.Open(dialector, &gorm.Config{
+ Logger: logger.Default.LogMode(loglevel),
+ })
+
+ if err != nil {
+ log.Fatalf("failed to connect to database: %v", err)
+ }
+
+ if err = migrate(); err != nil {
+ log.Fatalf("failed to migrate database: %v", err)
+ }
+
+ log.Println("database connection established")
+}
diff --git a/database/migrate.go b/database/migrate.go
new file mode 100644
index 0000000..0faf9d9
--- /dev/null
+++ b/database/migrate.go
@@ -0,0 +1,10 @@
+package database
+
+import "lain/models"
+
+func migrate() error {
+ err := DB.AutoMigrate(
+ &models.Preferences{},
+ )
+ return err
+}