68 lines
2.3 KiB
PHP
68 lines
2.3 KiB
PHP
<?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";
|
|
|