60 lines
2.6 KiB
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();
|
|
}
|
|
}
|