47 lines
1.4 KiB
PHP
47 lines
1.4 KiB
PHP
<?php
|
|
require_once implode(DIRECTORY_SEPARATOR, [
|
|
__DIR__,
|
|
'vendor',
|
|
'autoload.php'
|
|
]);
|
|
|
|
function setupDatabase(string $schemaFilename): void {
|
|
printf("Loading database schema from %s", $schemaFilename);
|
|
$start = microtime(true);
|
|
|
|
$dsn = "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_DATABASE']}";
|
|
$pdo = new PDO($dsn, $_ENV['DB_USER'], $_ENV['DB_PASSWORD']);
|
|
|
|
$sql = file_get_contents($schemaFilename);
|
|
$pdo->exec($sql);
|
|
|
|
$end = microtime(true);
|
|
printf(" in %.2f seconds\n", $end - $start);
|
|
}
|
|
function truncateTables(): void {
|
|
printf("Truncating tables");
|
|
$start = microtime(true);
|
|
|
|
$dsn = "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_DATABASE']}";
|
|
$pdo = new PDO($dsn, $_ENV['DB_USER'], $_ENV['DB_PASSWORD']);
|
|
|
|
$pdo->exec("SET FOREIGN_KEY_CHECKS=0");
|
|
$statement = $pdo->query('SHOW TABLES');
|
|
$tables = array_map(function(array $row) {
|
|
return $row["Tables_in_{$_ENV['DB_DATABASE']}"];
|
|
}, $statement->fetchAll(PDO::FETCH_ASSOC));
|
|
|
|
foreach ($tables as $table) {
|
|
$pdo->exec("TRUNCATE TABLE `$table`");
|
|
}
|
|
$pdo->exec("SET FOREIGN_KEY_CHECKS=1");
|
|
|
|
$end = microtime(true);
|
|
printf(" in %.2f seconds\n", $end - $start);
|
|
}
|
|
$schemaFilename = implode(DIRECTORY_SEPARATOR, [__DIR__, 'resources', 'database', 'schema.sql']);
|
|
setupDatabase($schemaFilename);
|
|
register_shutdown_function(function() {
|
|
truncateTables();
|
|
});
|