Files
kaffeekasse-saas/scripts/init-mysql-dev.php
T
2026-07-11 22:24:22 +02:00

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";