-- Coffee supply chain and equipment tables

CREATE TABLE roasters (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    country TEXT NOT NULL,
    city TEXT,
    homepage TEXT,
    slug TEXT,
    created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
);
CREATE UNIQUE INDEX idx_roasters_slug ON roasters(slug);

CREATE TABLE roasts (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    roaster_id INTEGER NOT NULL REFERENCES roasters(id) ON DELETE CASCADE,
    name TEXT NOT NULL,
    origin TEXT,
    region TEXT,
    producer TEXT,
    process TEXT,
    tasting_notes TEXT,
    slug TEXT,
    created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
);
CREATE INDEX idx_roasts_roaster_id ON roasts(roaster_id);
CREATE UNIQUE INDEX idx_roasts_roaster_slug ON roasts(roaster_id, slug);

CREATE TABLE bags (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    roast_id INTEGER NOT NULL REFERENCES roasts(id) ON DELETE CASCADE,
    roast_date TEXT,
    amount REAL NOT NULL,
    remaining REAL NOT NULL,
    closed BOOLEAN NOT NULL DEFAULT FALSE,
    finished_at TEXT,
    created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
    updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
);
CREATE INDEX idx_bags_roast_id ON bags(roast_id);
CREATE INDEX idx_bags_closed ON bags(closed);

CREATE TABLE gear (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    category TEXT NOT NULL CHECK (category IN ('grinder', 'brewer', 'filter_paper')),
    make TEXT NOT NULL,
    model TEXT NOT NULL,
    created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
    updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
);
CREATE INDEX idx_gear_category ON gear(category);
