USE stockhome; CREATE TABLE IF NOT EXISTS users ( uuid BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())), username VARCHAR(255) NOT NULL UNIQUE, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, is_admin BOOLEAN DEFAULT FALSE, is_active BOOLEAN DEFAULT TRUE, last_login TIMESTAMP NULL, profile_picture VARCHAR(500) NULL ); CREATE TABLE IF NOT EXISTS storage_locations ( uuid BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())), name VARCHAR(255) NOT NULL UNIQUE, description TEXT DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS products ( uuid BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())), name VARCHAR(255) NOT NULL, description TEXT DEFAULT NULL, price VARCHAR(10) DEFAULT NULL, amount INT NOT NULL, storage_location BINARY(16) NOT NULL, expiry_date DATE DEFAULT NULL, bottling_date DATE DEFAULT NULL, picture VARCHAR(500) DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deleted BOOLEAN DEFAULT FALSE NOT NULL, FOREIGN KEY (storage_location) REFERENCES storage_locations(uuid) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS app_settings ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL UNIQUE, value VARCHAR(500) DEFAULT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); INSERT INTO app_settings (name, value) VALUES ("app-name", null), ("currency", null), ("first-startup", "true");