2c8e31baff
- Ajoute .env.example avec toutes les variables requises (DB_DSN, OIDC_*, SMTP_*, SESSION_NAME, ADMIN_EMAIL…) — DB_DSN était absent et cassait database/migrate.php au premier déploiement. - Clarifie migrate-init.php : réservé aux serveurs existants antérieurs au système de migrations ; pour une installation fraîche, migrate.php suffit (applique tout depuis migration_000). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
65 lines
2.1 KiB
PHP
65 lines
2.1 KiB
PHP
<?php
|
|
|
|
// À exécuter UNE SEULE FOIS sur un serveur existant dont le schéma a été créé
|
|
// manuellement AVANT la mise en place du système de migrations automatiques.
|
|
//
|
|
// Pour une installation fraîche, ne PAS utiliser ce script :
|
|
// lancer directement `php database/migrate.php` qui applique tout depuis migration_000.
|
|
//
|
|
// Ne pas relancer sur une base déjà initialisée : ON CONFLICT DO NOTHING protège,
|
|
// mais les insertions inutiles pollueraient les logs.
|
|
declare(strict_types=1);
|
|
|
|
$baseDir = dirname(__DIR__);
|
|
$envFile = $baseDir . '/.env';
|
|
|
|
$env = [];
|
|
foreach (file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
|
|
$line = trim($line);
|
|
if ($line === '' || str_starts_with($line, '#')) {
|
|
continue;
|
|
}
|
|
[$k, $v] = array_pad(explode('=', $line, 2), 2, '');
|
|
$env[trim($k)] = trim($v, '"\'');
|
|
}
|
|
|
|
$pdo = new PDO($env['DB_DSN'], $env['DB_USER'] ?? '', $env['DB_PASS'] ?? '', [
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
]);
|
|
|
|
$pdo->exec('
|
|
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
name TEXT NOT NULL PRIMARY KEY,
|
|
applied_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
)
|
|
');
|
|
|
|
// Toutes les migrations appliquées manuellement avant l'automatisation
|
|
$alreadyApplied = [
|
|
'migration_000_initial_schema.sql',
|
|
'migration_001_roles_ratings.sql',
|
|
'migration_002_profile_url.sql',
|
|
'migration_003_profile_slug.sql',
|
|
'migration_004_profile_bio.sql',
|
|
'migration_005_rss_feeds.sql',
|
|
'migration_006_profile_links.sql',
|
|
'migration_007_comment_verify_token.sql',
|
|
'migration_008_user_profiles.sql',
|
|
'migration_009_journal_smtp.sql',
|
|
'migration_010_role_capabilities.sql',
|
|
'migration_011_user_capabilities.sql',
|
|
'migration_012_users.sql',
|
|
'migration_013_profiles.sql',
|
|
'migration_014_app_config.sql',
|
|
'migration_015_mail_queue.sql',
|
|
'migration_016_dictionary.sql',
|
|
];
|
|
|
|
$stmt = $pdo->prepare('INSERT INTO schema_migrations (name) VALUES (?) ON CONFLICT DO NOTHING');
|
|
foreach ($alreadyApplied as $name) {
|
|
$stmt->execute([$name]);
|
|
echo " ✓ marquée : $name\n";
|
|
}
|
|
|
|
echo "\nInitialisation terminée. Vous pouvez supprimer ce fichier.\n";
|