package models import ( "log" "os" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" ) var DB *gorm.DB type MediaHistory struct { gorm.Model SourceURL string `gorm:"uniqueIndex"` FilePath string Status string Type string // ENUM: "download", "upload" } func InitDB(dbPath string) { var err error // 도커 로그 디버깅을 위해 SQL 쿼리를 디테일하게 출력하는 로거 설정 newLogger := logger.New( log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{ LogLevel: logger.Info, Colorful: true, }, ) log.Println("Connecting to SQLite at:", dbPath) DB, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{ Logger: newLogger, }) if err != nil { log.Fatal("Failed to connect to database:", err) } // SQLite 동시성 최적화를 위해 WAL(Write-Ahead Logging) 모드를 활성화 DB.Exec("PRAGMA journal_mode=WAL;") err = DB.AutoMigrate(&MediaHistory{}) if err != nil { log.Println("Database migration error:", err) } log.Println("Database initialized and migrated.") }