package db import ( "log" "os" "time" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" "hightube/internal/model" ) var DB *gorm.DB // InitDB initializes the SQLite database connection and auto-migrates models. func InitDB() { newLogger := logger.New( log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer logger.Config{ SlowThreshold: time.Second, // Slow SQL threshold LogLevel: logger.Warn, // Log level IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger Colorful: true, // Disable color }, ) var err error // Use SQLite database stored in a local file named "hightube.db" DB, err = gorm.Open(sqlite.Open("hightube.db"), &gorm.Config{ Logger: newLogger, }) if err != nil { log.Fatalf("Failed to connect database: %v", err) } // Auto-migrate the schema err = DB.AutoMigrate(&model.User{}, &model.Room{}) if err != nil { log.Fatalf("Failed to migrate database: %v", err) } log.Println("Database initialized successfully.") }