shelfy/internal/db/db.go

81 lines
1.9 KiB
Go
Raw Permalink Normal View History

2025-06-06 07:42:55 +00:00
package db
import (
2025-06-09 14:13:32 +00:00
"app/shelfly/internal/debridlink"
2025-06-12 08:57:10 +00:00
"app/shelfly/internal/download"
2025-06-06 07:42:55 +00:00
"app/shelfly/internal/models"
2025-06-09 14:13:32 +00:00
"fmt"
2025-06-19 15:30:31 +00:00
"golang.org/x/crypto/bcrypt"
2025-06-06 07:42:55 +00:00
"gorm.io/driver/sqlite"
"gorm.io/gorm"
2025-06-19 15:30:31 +00:00
"log"
2025-06-06 07:42:55 +00:00
)
2025-06-19 15:20:58 +00:00
func InitDB() *gorm.DB {
dbName := "/app/shelfly_db/shelfly_db.db"
db, err := gorm.Open(sqlite.Open(dbName), &gorm.Config{})
2025-06-06 07:42:55 +00:00
if err != nil {
2025-06-19 15:20:58 +00:00
panic("failed to connect database")
2025-06-06 07:42:55 +00:00
}
2025-06-09 14:13:32 +00:00
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{},
2025-06-12 08:57:10 +00:00
&download.DownloadJob{},
2025-06-09 14:13:32 +00:00
)
2025-06-19 15:29:49 +00:00
InitDefaultAdmin(db)
2025-06-19 15:20:58 +00:00
fmt.Println("Connexion réussie à SQLite !")
fmt.Println("Auto migration terminée")
2025-06-06 07:42:55 +00:00
return db
}
2025-06-19 15:29:49 +00:00
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à")
}
}
2025-06-06 07:42:55 +00:00
2025-06-19 15:20:58 +00:00