38474-vm/db/migrations/001_enterprise_schema.sql
Flatlogic Bot 5e1b7e7c43 sadiq
2026-02-17 06:16:03 +00:00

73 lines
2.6 KiB
SQL

-- Branches Table
CREATE TABLE IF NOT EXISTS `branches` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL,
`location` VARCHAR(255) NOT NULL,
`phone` VARCHAR(20),
`email` VARCHAR(100),
`manager_id` INT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Car Images Table (Multiple Images)
CREATE TABLE IF NOT EXISTS `car_images` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`car_id` INT NOT NULL,
`image_url` VARCHAR(255) NOT NULL,
`is_primary` TINYINT(1) DEFAULT 0,
FOREIGN KEY (`car_id`) REFERENCES `cars`(`id`) ON DELETE CASCADE
);
-- Sales Table
CREATE TABLE IF NOT EXISTS `sales` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`car_id` INT NOT NULL,
`buyer_id` INT NOT NULL,
`seller_id` INT, -- Dealer or Admin who sold it
`sale_date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`final_price` DECIMAL(15, 2) NOT NULL,
`payment_method` ENUM('Cash', 'Installment') DEFAULT 'Cash',
`status` ENUM('Pending', 'Completed', 'Cancelled') DEFAULT 'Pending',
FOREIGN KEY (`car_id`) REFERENCES `cars`(`id`),
FOREIGN KEY (`buyer_id`) REFERENCES `users`(`id`)
);
-- Installments Table
CREATE TABLE IF NOT EXISTS `installments` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`sale_id` INT NOT NULL,
`total_amount` DECIMAL(15, 2) NOT NULL,
`paid_amount` DECIMAL(15, 2) DEFAULT 0.00,
`monthly_payment` DECIMAL(15, 2) NOT NULL,
`due_date` DATE,
`status` ENUM('Active', 'Completed', 'Defaulted') DEFAULT 'Active',
FOREIGN KEY (`sale_id`) REFERENCES `sales`(`id`) ON DELETE CASCADE
);
-- Activity Logs
CREATE TABLE IF NOT EXISTS `activity_logs` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT,
`action` VARCHAR(255) NOT NULL,
`details` TEXT,
`ip_address` VARCHAR(45),
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Notifications
CREATE TABLE IF NOT EXISTS `notifications` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT NOT NULL,
`message` TEXT NOT NULL,
`is_read` TINYINT(1) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
);
-- Update Cars Table
ALTER TABLE `cars` ADD COLUMN IF NOT EXISTS `dealer_id` INT DEFAULT NULL;
ALTER TABLE `cars` ADD COLUMN IF NOT EXISTS `installment_available` TINYINT(1) DEFAULT 0;
-- Update Users Table (Ensure role column is correct - strictly speaking it already exists but this is safe)
-- ALTER TABLE `users` MODIFY COLUMN `role` ENUM('Guest','Customer','Dealer','Employee','Manager','Admin','Super Admin') DEFAULT 'Customer';