97 lines
3.6 KiB
PHP
97 lines
3.6 KiB
PHP
<?php
|
|
require_once __DIR__ . '/config.php';
|
|
|
|
try {
|
|
$pdo = db();
|
|
|
|
// Users Table
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
email VARCHAR(100) NOT NULL UNIQUE,
|
|
password VARCHAR(255) NOT NULL,
|
|
role ENUM('guest', 'user', 'admin') DEFAULT 'user',
|
|
status ENUM('active', 'inactive') DEFAULT 'active',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP NULL DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
|
|
|
|
// Cars Table
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS cars (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
brand VARCHAR(50) NOT NULL,
|
|
model VARCHAR(50) NOT NULL,
|
|
year INT NOT NULL,
|
|
price DECIMAL(10, 2) NOT NULL,
|
|
city VARCHAR(50) NOT NULL,
|
|
description TEXT,
|
|
status ENUM('pending', 'approved', 'rejected', 'sold') DEFAULT 'pending',
|
|
is_hot_deal BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP NULL DEFAULT NULL,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
|
|
|
|
// Car Images Table
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS car_images (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
car_id INT NOT NULL,
|
|
image_path VARCHAR(255) NOT NULL,
|
|
is_main BOOLEAN DEFAULT FALSE,
|
|
FOREIGN KEY (car_id) REFERENCES cars(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
|
|
|
|
// Reviews Table
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS reviews (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
car_id INT NOT NULL,
|
|
user_id INT NOT NULL,
|
|
rating INT CHECK (rating >= 1 AND rating <= 5),
|
|
comment TEXT,
|
|
status ENUM('pending', 'approved') DEFAULT 'pending',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (car_id) REFERENCES cars(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
|
|
|
|
// Purchases (Simulation)
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS purchases (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
car_id INT NOT NULL,
|
|
user_id INT NOT NULL,
|
|
buyer_name VARCHAR(100),
|
|
buyer_email VARCHAR(100),
|
|
buyer_phone VARCHAR(20),
|
|
status ENUM('pending', 'completed', 'cancelled') DEFAULT 'pending',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (car_id) REFERENCES cars(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
|
|
|
|
// Contact Messages
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS contact_messages (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100),
|
|
email VARCHAR(100),
|
|
subject VARCHAR(200),
|
|
message TEXT,
|
|
status ENUM('unread', 'read', 'answered') DEFAULT 'unread',
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
|
|
|
|
// Seed Admin User
|
|
$adminEmail = 'admin@gmail.com';
|
|
$stmt = $pdo->prepare("SELECT id FROM users WHERE email = ?");
|
|
$stmt->execute([$adminEmail]);
|
|
if (!$stmt->fetch()) {
|
|
$password = password_hash('12345678', PASSWORD_DEFAULT);
|
|
$pdo->prepare("INSERT INTO users (name, email, password, role) VALUES (?, ?, ?, ?)")
|
|
->execute(['Admin', $adminEmail, $password, 'admin']);
|
|
}
|
|
|
|
echo "Database setup successfully.";
|
|
} catch (PDOException $e) {
|
|
die("Database error: " . $e->getMessage());
|
|
}
|