54 lines
2.2 KiB
SQL
54 lines
2.2 KiB
SQL
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`username` VARCHAR(255) NOT NULL UNIQUE,
|
|
`password_hash` VARCHAR(255) NOT NULL,
|
|
`role` ENUM('admin', 'cashier') NOT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `products` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`barcode` VARCHAR(255) NULL UNIQUE,
|
|
`price` DECIMAL(10, 2) NOT NULL,
|
|
`description` TEXT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `inventory` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`product_id` INT NOT NULL,
|
|
`quantity` INT NOT NULL DEFAULT 0,
|
|
`low_stock_threshold` INT NOT NULL DEFAULT 10,
|
|
`last_updated` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `sales` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`receipt_number` VARCHAR(255) NOT NULL UNIQUE,
|
|
`total_amount` DECIMAL(10, 2) NOT NULL,
|
|
`tax_amount` DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
|
`user_id` INT NULL,
|
|
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `sale_items` (
|
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
`sale_id` INT NOT NULL,
|
|
`product_id` INT NOT NULL,
|
|
`quantity` INT NOT NULL,
|
|
`price_at_sale` DECIMAL(10, 2) NOT NULL,
|
|
FOREIGN KEY (`sale_id`) REFERENCES `sales`(`id`) ON DELETE CASCADE,
|
|
FOREIGN KEY (`product_id`) REFERENCES `products`(`id`) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Seed default users: admin/password, cashier/password
|
|
-- IMPORTANT: These are default passwords and should be changed immediately.
|
|
INSERT IGNORE INTO `users` (`username`, `password_hash`, `role`) VALUES
|
|
('admin', '$2y$10$lZrH00Q3UgsdZWnEWU0EROOCaOtGdeSVcQ1pdYg4ft77jR6zW4.UG', 'admin'), -- password
|
|
('cashier', '$2y$10$lZrH00Q3UgsdZWnEWU0EROOCaOtGdeSVcQ1pdYg4ft77jR6zW4.UG', 'cashier'); -- password
|