52 lines
1.6 KiB
PHP
52 lines
1.6 KiB
PHP
<?php
|
|
|
|
$host = getenv('DB_HOST') ?: 'localhost';
|
|
$port = getenv('DB_PORT') ?: '5432';
|
|
$dbname = getenv('DB_DATABASE') ?: 'usite_heidivers';
|
|
$user = getenv('DB_USERNAME') ?: 'usite_heidivers';
|
|
$pass = getenv('DB_PASSWORD') ?: '';
|
|
|
|
$dsn = "pgsql:host=$host;port=$port;dbname=$dbname";
|
|
try {
|
|
$pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
|
|
} catch (PDOException $e) {
|
|
fwrite(STDERR, "DB not available: {$e->getMessage()}\n");
|
|
exit(0);
|
|
}
|
|
|
|
$tables = $pdo->query("SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'")->fetchAll(PDO::FETCH_COLUMN);
|
|
|
|
if (!in_array('sessions', $tables)) {
|
|
$pdo->exec("CREATE TABLE sessions (
|
|
id VARCHAR(255) PRIMARY KEY,
|
|
user_id BIGINT NULL,
|
|
ip_address VARCHAR(45) NULL,
|
|
user_agent TEXT NULL,
|
|
payload TEXT NOT NULL,
|
|
last_activity INTEGER NOT NULL
|
|
)");
|
|
$pdo->exec("CREATE INDEX sessions_user_id_index ON sessions (user_id)");
|
|
$pdo->exec("CREATE INDEX sessions_last_activity_index ON sessions (last_activity)");
|
|
echo "Created sessions table\n";
|
|
}
|
|
|
|
if (!in_array('cache', $tables)) {
|
|
$pdo->exec("CREATE TABLE cache (
|
|
key VARCHAR(255) PRIMARY KEY,
|
|
value TEXT NOT NULL,
|
|
expiration INTEGER NOT NULL
|
|
)");
|
|
echo "Created cache table\n";
|
|
}
|
|
|
|
if (!in_array('cache_locks', $tables)) {
|
|
$pdo->exec("CREATE TABLE cache_locks (
|
|
key VARCHAR(255) PRIMARY KEY,
|
|
owner VARCHAR(255) NOT NULL,
|
|
expiration INTEGER NOT NULL
|
|
)");
|
|
echo "Created cache_locks table\n";
|
|
}
|
|
|
|
echo "Tables check complete\n";
|