package db import ( "app/shelfly/internal/debridlink" "app/shelfly/internal/download" "app/shelfly/internal/models" "fmt" "golang.org/x/crypto/bcrypt" "gorm.io/driver/sqlite" "gorm.io/gorm" "log" ) func InitDB() *gorm.DB { dbName := "/app/shelfly_db/shelfly_db.db" db, err := gorm.Open(sqlite.Open(dbName), &gorm.Config{}) if err != nil { panic("failed to connect database") } db.AutoMigrate( &models.User{}, &models.Files{}, &models.LibrarySection{}, &models.MediaItem{}, &models.MediaPart{}, &models.MetadataItem{}, &models.SectionLocation{}, &models.Tag{}, &models.Tagging{}, &models.PathDownload{}, &debridlink.File{}, &debridlink.Link{}, &debridlink.RSSFeed{}, &debridlink.RSSItem{}, &debridlink.Torrent{}, &debridlink.DebridAccount{}, &download.DownloadJob{}, ) InitDefaultAdmin(db) fmt.Println("Connexion réussie à SQLite !") fmt.Println("Auto migration terminée") return db } func InitDefaultAdmin(db *gorm.DB) { const email = "canguijc@gmail.com" const username = "admin" const name = "Admin" const password = "GHT30k7!" var user models.User result := db.Where("email = ?", email).First(&user) if result.Error == gorm.ErrRecordNotFound { hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) if err != nil { log.Fatalf("Erreur lors du hash du mot de passe: %v", err) } newUser := models.User{ Email: email, Username: username, Name: name, Password: string(hashedPassword), } if err := db.Create(&newUser).Error; err != nil { log.Fatalf("Erreur lors de la création de l'utilisateur admin: %v", err) } log.Println("✅ Utilisateur administrateur créé avec succès") } else if result.Error != nil { log.Fatalf("Erreur lors de la vérification de l'utilisateur admin: %v", result.Error) } else { log.Println("ℹ️ L'utilisateur administrateur existe déjà") } }