--------------------------------------------
-- Recipe/Cookie related tables
--------------------------------------------

-- Holds the different types of cookies we can make.
CREATE TABLE IF NOT EXISTS cookies (
    cookie_id INT PRIMARY KEY,
    cookie_name VARCHAR(50) NOT NULL UNIQUE
);

-- Our known customers, may need more fields
CREATE TABLE IF NOT EXISTS customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(50) NOT NULL,
    customer_address VARCHAR(50) NOT NULL
);

-- Orders from customers.
CREATE TABLE IF NOT EXISTS orders (
    order_id INT PRIMARY KEY,
    customer_id INT NOT NULL,
    cookie_id INT NOT NULL,
    order_date DATE NOT NULL DEFAULT CURRENT_DATE CHECK (order_date >= CURRENT_DATE),
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
    FOREIGN KEY (cookie_id) REFERENCES cookies(cookie_id)
);

--------------------------------------------
-- Recipe/Cookie related tables
--------------------------------------------

-- Describes ingredients and stock.
CREATE TABLE IF NOT EXISTS raw_materials (
    ingredient_id INT PRIMARY KEY,
    ingredient_name VARCHAR(50) NOT NULL UNIQUE,
    ingredient_quantity INT NOT NULL,
    unit VARCHAR(50) NOT NULL CHECK (unit IN ('g', 'ml'))
);

-- When did we get the ingredients?
CREATE TABLE IF NOT EXISTS raw_materials_deliveries (
    delivery_id INT PRIMARY KEY,
    ingredient_id INT NOT NULL,
    delivery_date DATE NOT NULL,
    delivery_quantity INT NOT NULL,
    unit VARCHAR(50) NOT NULL CHECK (unit IN ('g', 'ml')),
    FOREIGN KEY (ingredient_id) REFERENCES raw_materials(ingredient_id)
);

--------------------------------------------
-- Pallet related tables
--------------------------------------------

-- Pallets are used to store cookies for delivery
-- Order related columns are unused for now.
CREATE TABLE IF NOT EXISTS pallets (
    pallet_id INT PRIMARY KEY,
    cookie_id INT NOT NULL,
    -- order_id INT NOT NULL,
    status VARCHAR(50) NOT NULL CHECK (status IN ('freezer', 'delivered', 'blocked')),
    production_date DATE NOT NULL,
    delivery_date DATE DEFAULT NULL,
    FOREIGN KEY (cookie_id) REFERENCES cookies(cookie_id)
    -- FOREIGN KEY (order_id) REFERENCES orders(order_id)
);
