M0 Einrichtung
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
$required = ['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS', 'DEV_AUTH_EMAIL'];
|
||||
foreach ($required as $name) {
|
||||
if ((getenv($name) ?: '') === '') {
|
||||
fwrite(STDERR, "Missing environment variable: {$name}\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
$dsn = sprintf(
|
||||
'mysql:host=%s;port=%s;dbname=%s;charset=utf8mb4',
|
||||
getenv('DB_HOST'),
|
||||
getenv('DB_PORT') ?: '3306',
|
||||
getenv('DB_NAME')
|
||||
);
|
||||
|
||||
$pdo = new PDO($dsn, getenv('DB_USER'), getenv('DB_PASS'), [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
]);
|
||||
|
||||
$schema = file_get_contents(__DIR__ . '/../database/mysql-dev-schema.sql');
|
||||
if ($schema === false) {
|
||||
fwrite(STDERR, "Could not read schema file.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$pdo->exec($schema);
|
||||
|
||||
$email = strtolower(trim((string)getenv('DEV_AUTH_EMAIL')));
|
||||
$name = trim((string)(getenv('DEV_AUTH_NAME') ?: 'Test Admin'));
|
||||
|
||||
$stmt = $pdo->prepare(
|
||||
'INSERT INTO kl_Mitarbeiter (Name, Email, aktiv, admin)
|
||||
VALUES (?, ?, 1, 1)
|
||||
ON DUPLICATE KEY UPDATE Name = VALUES(Name), aktiv = 1, admin = 1'
|
||||
);
|
||||
$stmt->execute([$name, $email]);
|
||||
|
||||
$memberId = (int)$pdo->query('SELECT MitarbeiterID FROM kl_Mitarbeiter WHERE Email = ' . $pdo->quote($email))->fetchColumn();
|
||||
|
||||
$paymentCount = (int)$pdo->query('SELECT COUNT(*) FROM kl_Einzahlungen WHERE MitarbeiterID = ' . $memberId)->fetchColumn();
|
||||
if ($paymentCount === 0) {
|
||||
$stmt = $pdo->prepare('INSERT INTO kl_Einzahlungen (MitarbeiterID, Betrag, Datum) VALUES (?, ?, NOW())');
|
||||
$stmt->execute([$memberId, 10.00]);
|
||||
}
|
||||
|
||||
$consumptionCount = (int)$pdo->query('SELECT COUNT(*) FROM kl_Kaffeeverbrauch WHERE MitarbeiterID = ' . $memberId)->fetchColumn();
|
||||
if ($consumptionCount === 0) {
|
||||
$stmt = $pdo->prepare(
|
||||
'INSERT INTO kl_Kaffeeverbrauch (MitarbeiterID, AnzahlStriche, Kosten, KostenproStrich, Datum, Eintragsart)
|
||||
VALUES (?, ?, ?, ?, NOW(), ?)'
|
||||
);
|
||||
$stmt->execute([$memberId, 3, 0.60, 0.20, 2]);
|
||||
}
|
||||
|
||||
$noticeCount = (int)$pdo->query('SELECT COUNT(*) FROM kl_hinweise')->fetchColumn();
|
||||
if ($noticeCount === 0) {
|
||||
$stmt = $pdo->prepare('INSERT INTO kl_hinweise (nachricht, gueltig_bis) VALUES (?, DATE_ADD(NOW(), INTERVAL 30 DAY))');
|
||||
$stmt->execute(['Dev-Hinweis: MySQL-Testumgebung aktiv.']);
|
||||
}
|
||||
|
||||
echo "MySQL dev schema is ready for {$email}.\n";
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
PHP_BIN="${PHP_BIN:-$ROOT_DIR/.local/php/usr/bin/php8.3}"
|
||||
PHP_INI="${PHP_INI:-$ROOT_DIR/.local/php-dev.ini}"
|
||||
PHP_LIB_DIR="$ROOT_DIR/.local/php/usr/lib/x86_64-linux-gnu"
|
||||
|
||||
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-$PHP_LIB_DIR}"
|
||||
export APP_DB_DRIVER="${APP_DB_DRIVER:-mysql}"
|
||||
export APP_ENV="${APP_ENV:-dev}"
|
||||
export DEV_AUTH_EMAIL="${DEV_AUTH_EMAIL:-admin@test.local}"
|
||||
export DEV_AUTH_NAME="${DEV_AUTH_NAME:-Test Admin}"
|
||||
|
||||
exec "$PHP_BIN" -c "$PHP_INI" -S "${HOST:-127.0.0.1}:${PORT:-8080}" -t "$ROOT_DIR"
|
||||
Reference in New Issue
Block a user