fix(db): align automatic migrations with SQL files

This commit is contained in:
okinrev 2025-12-07 14:26:48 +01:00
parent 7a5de55a56
commit 3366d40101

View file

@ -14,6 +14,8 @@ import (
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite" // Added sqlite driver
"gorm.io/gorm"
"path/filepath"
"sort"
)
// Config contient la configuration de la base de données
@ -167,54 +169,6 @@ func (d *Database) RunMigrations() error {
// GORM n'est plus utilisé pour créer/modifier les tables
d.Logger.Info("📦 Exécution des migrations SQL...")
// Liste des migrations à exécuter dans l'ordre
migrations := []string{
// === TABLES DE BASE ===
"001_create_users.sql", // Table users - DOIT être première
"003_email_verification.sql",
"004_oauth_accounts.sql",
"005_user_profiles.sql",
"008_playlists.sql",
"009_follows.sql",
"013_notifications.sql",
"016_analytics.sql",
"017_admin_logs.sql",
"018_create_email_verification_tokens.sql",
"019_create_password_reset_tokens.sql",
"020_create_sessions.sql",
"021_add_profile_privacy.sql",
"022_add_profile_slug.sql",
"023_create_roles_permissions.sql",
"024_seed_permissions.sql",
"025_create_tracks.sql",
"026_add_track_status.sql",
"027_create_track_likes.sql",
"028_create_track_comments.sql",
"029_create_track_plays.sql",
"030_create_playlists.sql",
"031_create_playlist_collaborators.sql",
"031_create_track_shares.sql",
"032_create_playlist_follows.sql",
"032_create_track_versions.sql",
"033_create_track_history.sql",
"034_create_hls_streams_table.sql",
"035_create_hls_transcode_queue.sql",
"036_create_bitrate_adaptation_logs.sql",
"037_create_playback_analytics.sql",
"038_add_playback_analytics_indexes.sql",
"040_create_refresh_tokens.sql",
"041_create_rooms.sql",
"042_create_room_members.sql",
"043_create_messages.sql",
"044_add_sessions_revoked_at.sql",
"045_create_user_sessions.sql",
"046_add_playlists_missing_columns.sql", // Ajout follower_count et deleted_at
"add_sessions_table.sql",
"add_totp_tables.sql",
"add_audit_logs.sql",
"add_performance_indexes.sql",
}
// Créer la table migrations si elle n'existe pas
createMigrationsTable := `
CREATE TABLE IF NOT EXISTS schema_migrations (
@ -227,8 +181,21 @@ func (d *Database) RunMigrations() error {
return fmt.Errorf("failed to create migrations table: %w", err)
}
// Découvir les fichiers de migration
files, err := filepath.Glob("migrations/*.sql")
if err != nil {
return fmt.Errorf("failed to list migration files: %w", err)
}
sort.Strings(files)
if len(files) == 0 {
d.Logger.Warn("⚠️ Aucune migration trouvée dans le dossier migrations/")
}
// Exécuter chaque migration
for _, migration := range migrations {
for _, file := range files {
migration := filepath.Base(file)
// Vérifier si la migration a déjà été appliquée
var exists bool
checkQuery := "SELECT EXISTS(SELECT 1 FROM schema_migrations WHERE version = $1)"
@ -242,8 +209,7 @@ func (d *Database) RunMigrations() error {
}
// Lire le fichier de migration
migrationPath := fmt.Sprintf("migrations/%s", migration)
content, err := os.ReadFile(migrationPath)
content, err := os.ReadFile(file)
if err != nil {
d.Logger.Warn("Migration non trouvée, skip", zap.String("migration", migration))
continue