execute(' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, permissions TEXT, last_login DATETIME, first_name VARCHAR(255), last_name VARCHAR(255), created_at DATETIME, updated_at DATETIME ) '); $database->execute(' CREATE TABLE IF NOT EXISTS roles ( id INTEGER PRIMARY KEY AUTOINCREMENT, slug VARCHAR(255) NOT NULL UNIQUE, name VARCHAR(255) NOT NULL, permissions TEXT, created_at DATETIME, updated_at DATETIME ) '); $database->execute(' CREATE TABLE IF NOT EXISTS role_users ( user_id INTEGER NOT NULL, role_id INTEGER NOT NULL, created_at DATETIME, updated_at DATETIME, PRIMARY KEY (user_id, role_id) ) '); $database->execute(' CREATE TABLE IF NOT EXISTS persistences ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, code VARCHAR(255) NOT NULL UNIQUE, created_at DATETIME, updated_at DATETIME ) '); $database->execute(' CREATE TABLE IF NOT EXISTS activations ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, code VARCHAR(255) NOT NULL, completed INTEGER NOT NULL DEFAULT 0, completed_at DATETIME, created_at DATETIME, updated_at DATETIME ) '); $database->execute(' CREATE TABLE IF NOT EXISTS reminders ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, code VARCHAR(255) NOT NULL, completed INTEGER NOT NULL DEFAULT 0, completed_at DATETIME, created_at DATETIME, updated_at DATETIME ) '); $database->execute(' CREATE TABLE IF NOT EXISTS throttle ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, type VARCHAR(255) NOT NULL, ip VARCHAR(255), created_at DATETIME, updated_at DATETIME ) '); } public function down(Database $database): void { foreach (['throttle', 'reminders', 'activations', 'persistences', 'role_users', 'roles', 'users'] as $table) { $database->execute("DROP TABLE IF EXISTS {$table}"); } } };