exec($query); } catch (PDOException $e) { // Ignore errors like "Duplicate column" if re-running on existing DB if (strpos($e->getMessage(), 'Duplicate column') === false && strpos($e->getMessage(), 'already exists') === false) { echo "Notice (Schema): " . $e->getMessage() . "\n"; } } } } // 2. Run Company Settings if table exists if (file_exists(__DIR__ . '/company_settings.sql')) { $cs_sql = file_get_contents(__DIR__ . '/company_settings.sql'); $cs_queries = array_filter(array_map('trim', explode(';', $cs_sql))); foreach ($cs_queries as $query) { if (!empty($query)) { try { $pdo->exec($query); } catch (PDOException $e) { // Ignore } } } } // 3. Seed initial data if empty $stmt = $pdo->query("SELECT COUNT(*) FROM outlets"); if ($stmt->fetchColumn() == 0) { $pdo->exec("INSERT INTO outlets (name, address) VALUES ('Main Downtown', '123 Main St'), ('Westside Hub', '456 West Blvd')"); $pdo->exec("INSERT INTO categories (name, sort_order) VALUES ('Burgers', 1), ('Sides', 2), ('Drinks', 3)"); $pdo->exec("INSERT INTO products (category_id, name, description, price) VALUES (1, 'Signature Burger', 'Juicy beef patty with special sauce', 12.99), (1, 'Veggie Delight', 'Plant-based patty with fresh avocado', 11.50), (2, 'Truffle Fries', 'Crispy fries with truffle oil and parmesan', 5.99), (3, 'Craft Cola', 'House-made sparkling cola', 3.50)"); // Ensure Admin group and user exist $pdo->exec("INSERT IGNORE INTO user_groups (id, name, permissions) VALUES (1, 'Administrator', 'all')"); // admin123 hash $hashed_pass = password_hash('admin123', PASSWORD_DEFAULT); $pdo->exec("INSERT IGNORE INTO users (group_id, username, password, full_name, is_active) VALUES (1, 'admin', '$hashed_pass', 'Super Admin', 1)"); echo "Database initialized and seeded successfully."; } else { echo "Database structure updated. Data already exists."; } } catch (Exception $e) { echo "Error: " . $e->getMessage(); }