philippurbschat.de/home/app/services/MigrationService.php

60 lines
2.6 KiB
PHP

<?php
class MigrationService {
public static function run(Database $db) {
$driver = $db->getDriver();
if ($driver === 'sqlite') {
$db->query("CREATE TABLE IF NOT EXISTS home_users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(191) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
projects TEXT NULL,
is_admin INTEGER NOT NULL DEFAULT 0,
status VARCHAR(20) NOT NULL DEFAULT 'Active',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)");
$db->execute();
$db->query("CREATE TABLE IF NOT EXISTS home_invitations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
token VARCHAR(64) NOT NULL UNIQUE,
assigned_projects TEXT NULL,
max_uses INTEGER NOT NULL DEFAULT 1,
uses_count INTEGER NOT NULL DEFAULT 0,
expires_at DATETIME NULL,
note VARCHAR(255) NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)");
$db->execute();
} else {
$db->query("CREATE TABLE IF NOT EXISTS home_users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(191) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
projects TEXT NULL,
is_admin TINYINT(1) NOT NULL DEFAULT 0,
status VARCHAR(20) NOT NULL DEFAULT 'Active',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
$db->execute();
$db->query("CREATE TABLE IF NOT EXISTS home_invitations (
id INT AUTO_INCREMENT PRIMARY KEY,
token VARCHAR(64) NOT NULL UNIQUE,
assigned_projects TEXT NULL,
max_uses INT NOT NULL DEFAULT 1,
uses_count INT NOT NULL DEFAULT 0,
expires_at DATETIME NULL,
note VARCHAR(255) NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
$db->execute();
}
// Ensure owner email addresses have admin privileges
$db->query("UPDATE home_users SET is_admin = 1, status = 'Active' WHERE LOWER(email) IN ('philipp.urbschat@gmail.com', 'hi@philippurbschat.de')");
$db->execute();
}
}