-- Update Users table: add status and possibly other fields if needed -- Users already has 'role' ENUM('admin', 'user') -- Update Cars table ALTER TABLE cars ADD COLUMN owner_id INT NULL AFTER id; ALTER TABLE cars ADD COLUMN approval_status ENUM('pending', 'approved', 'rejected') DEFAULT 'approved' AFTER status; ALTER TABLE cars ADD COLUMN view_count INT DEFAULT 0 AFTER approval_status; ALTER TABLE cars ADD COLUMN badge VARCHAR(50) NULL AFTER view_count; ALTER TABLE cars ADD CONSTRAINT fk_cars_owner FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE SET NULL; -- Reviews Table CREATE TABLE IF NOT EXISTS reviews ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, car_id INT NOT NULL, rating INT NOT NULL CHECK (rating >= 1 AND rating <= 5), comment TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (car_id) REFERENCES cars(id) ON DELETE CASCADE ) ENGINE=InnoDB; -- Notifications Table CREATE TABLE IF NOT EXISTS notifications ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NULL, -- NULL means it might be for all admins or system-wide message TEXT NOT NULL, type VARCHAR(50) DEFAULT 'info', -- 'new_car', 'new_booking', 'new_purchase' is_read TINYINT(1) DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB; -- Purchases Table (Simulation) CREATE TABLE IF NOT EXISTS purchases ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, car_id INT NOT NULL, amount DECIMAL(12, 2) NOT NULL, bank_name VARCHAR(100) NOT NULL, transaction_id VARCHAR(100) NOT NULL, status ENUM('pending', 'completed', 'failed') DEFAULT 'completed', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, FOREIGN KEY (car_id) REFERENCES cars(id) ON DELETE CASCADE ) ENGINE=InnoDB;