PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ]); } return $pdo; } function db_init() { try { $pdo = db(); // Contact Submissions Table $pdo->exec("CREATE TABLE IF NOT EXISTS contact_submissions ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, message TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );"); // Organizations Table $pdo->exec("CREATE TABLE IF NOT EXISTS Organization ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, type ENUM('Insurer','Financier','OEM','FleetOperator','Partner') NOT NULL, contactEmail VARCHAR(255), phone VARCHAR(255), address TEXT, website VARCHAR(255), approved BOOLEAN DEFAULT false, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP );"); // Users Table $pdo->exec("CREATE TABLE IF NOT EXISTS User ( id INT AUTO_INCREMENT PRIMARY KEY, firstName VARCHAR(255) NOT NULL, lastName VARCHAR(255), email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, phone VARCHAR(255), role ENUM('Rider','FleetOperator','Insurer','Financier','OEM','Partner','Support','Admin','Public') NOT NULL, organizationId INT, verified BOOLEAN DEFAULT false, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (organizationId) REFERENCES Organization(id) ON DELETE SET NULL );"); // Fleets Table $pdo->exec("CREATE TABLE IF NOT EXISTS Fleet ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, organizationId INT, managerUserId INT, notes TEXT, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (organizationId) REFERENCES Organization(id) ON DELETE CASCADE, FOREIGN KEY (managerUserId) REFERENCES User(id) ON DELETE SET NULL );"); // Vehicles Table $pdo->exec("CREATE TABLE IF NOT EXISTS Vehicle ( id INT AUTO_INCREMENT PRIMARY KEY, vin VARCHAR(255) UNIQUE, model VARCHAR(255) NOT NULL, licensePlate VARCHAR(255), ownerUserId INT, fleetId INT, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (ownerUserId) REFERENCES User(id) ON DELETE SET NULL, FOREIGN KEY (fleetId) REFERENCES Fleet(id) ON DELETE SET NULL );"); } catch (PDOException $e) { die("Database initialization failed: " . $e->getMessage()); } } // Run the initialization function to ensure tables exist. db_init();