aboutsummaryrefslogtreecommitdiff
path: root/database
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-06-16 06:06:02 +0530
committerBobby <[email protected]>2025-06-16 06:06:02 +0530
commitcfa8164f2468ea5a63b4cce2edb01957846b2b12 (patch)
tree6bb3c9c3bf206c2cae48420f9c142fa85aef8e98 /database
parent5e665642bf30a9902d191cec86a33fd3b878359a (diff)
downloadimageboard-cfa8164f2468ea5a63b4cce2edb01957846b2b12.tar.xz
imageboard-cfa8164f2468ea5a63b4cce2edb01957846b2b12.zip
moved app secret, dev mode to server config. added min password length
Diffstat (limited to 'database')
-rw-r--r--database/database.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/database/database.go b/database/database.go
new file mode 100644
index 0000000..d063cfc
--- /dev/null
+++ b/database/database.go
@@ -0,0 +1,49 @@
+package database
+
+import (
+ "fmt"
+ "imageboard/config"
+ "log"
+
+ "gorm.io/driver/postgres"
+ "gorm.io/gorm"
+ "gorm.io/gorm/logger"
+)
+
+var (
+ DB *gorm.DB
+ err error
+)
+
+func init() {
+ dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=%s",
+ config.Database.Host,
+ config.Database.Username,
+ config.Database.Password,
+ config.Database.DatabaseName,
+ config.Database.Port,
+ config.Database.SSLMode,
+ )
+
+ logLevel := logger.Silent
+ if config.Server.IsDevMode {
+ logLevel = logger.Info
+ }
+
+ DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
+ Logger: logger.Default.LogMode(logLevel),
+ })
+ if err != nil {
+ log.Fatalf("failed to connect to database: %v", err)
+ }
+
+ if err := autoMigrate(); err != nil {
+ log.Fatalf("failed to auto migrate database: %v", err)
+ }
+
+ log.Println("Database connection established successfully")
+}
+
+func autoMigrate() error {
+ return DB.AutoMigrate()
+}