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