/
TorX
/
rasp
Обзор
Документация
Войти
/
TorX
/
rasp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
includes/db.php
90 строк
3 KB
tormovies
Add a posted flag for upcoming releases in admin and public lists.
07 авг 2026, 15:02
07 авг 2026, 15:02
3708742
Код
Авторство
О чём код?
<?php declare(strict_types=1); function app_config(): array { static $config; if ($config !== null) { return $config; } $example = require __DIR__ . '/../config.example.php'; $localFile = __DIR__ . '/../config.local.php'; $local = is_file($localFile) ? require $localFile : []; $config = array_replace_recursive($example, is_array($local) ? $local : []); return $config; } function db(): PDO { static $pdo; if ($pdo instanceof PDO) { return $pdo; } $c = app_config()['db']; $dsn = sprintf( 'mysql:host=%s;port=%d;dbname=%s;charset=%s', $c['host'], (int) $c['port'], $c['name'], $c['charset'] ); $pdo = new PDO($dsn, $c['user'], $c['pass'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]); ensure_schema($pdo); return $pdo; } function ensure_schema(PDO $pdo): void { $pdo->exec(" CREATE TABLE IF NOT EXISTS artists ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at VARCHAR(40) NOT NULL, UNIQUE KEY artists_name_unique (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci "); $pdo->exec(" CREATE TABLE IF NOT EXISTS releases ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, artist_id INT NOT NULL, title VARCHAR(500) NOT NULL, release_date VARCHAR(10) NOT NULL, genre VARCHAR(255) NOT NULL, lyric_author VARCHAR(255) NOT NULL, label VARCHAR(255) NOT NULL DEFAULT '', type VARCHAR(20) NOT NULL DEFAULT 'single', has_pitch TINYINT(1) NOT NULL DEFAULT 0, is_posted TINYINT(1) NOT NULL DEFAULT 0, created_at VARCHAR(40) NOT NULL, updated_at VARCHAR(40) NOT NULL, KEY releases_date_idx (release_date), CONSTRAINT releases_artist_id_fk FOREIGN KEY (artist_id) REFERENCES artists(id) ON DELETE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci "); ensure_column($pdo, 'releases', 'is_posted', 'TINYINT(1) NOT NULL DEFAULT 0 AFTER has_pitch'); } function ensure_column(PDO $pdo, string $table, string $column, string $definition): void { $stmt = $pdo->prepare(' SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND COLUMN_NAME = ? '); $stmt->execute([$table, $column]); if ((int) $stmt->fetchColumn() === 0) { $pdo->exec("ALTER TABLE `{$table}` ADD COLUMN `{$column}` {$definition}"); } }