Files
ordr/db/schema initialization.sql

53 lines
1.6 KiB
SQL

CREATE TABLE IF NOT EXISTS ordr_user (
id SERIAL NOT NULL PRIMARY KEY,
sub_id TEXT UNIQUE NOT NULL,
user_name TEXT NOT NULL,
position TEXT DEFAULT "",
active BOOLEAN NOT NULL DEFAULT TRUE,
is_admin BOOLEAN NOT NULL DEFAULT FALSE
);
CREATE TABLE IF NOT EXISTS order_record (
id SERIAL NOT NULL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES ordr_user(id),
orderer TEXT NOT NULL,
date_due TIMESTAMP NOT NULL,
date_placed TIMESTAMP NOT NULL DEFAULT now(),
amount_paid REAL NOT NULL DEFAULT 0,
filled BOOLEAN NOT NULL DEFAULT FALSE,
delivered BOOLEAN NOT NULL DEFAULT FALSE
);
CREATE TABLE IF NOT EXISTS item (
id SERIAL NOT NULL PRIMARY KEY,
item_name TEXT NOT NULL,
in_season BOOLEAN NOT NULL DEFAULT TRUE
);
CREATE TABLE IF NOT EXISTS item_price_history (
item_id INTEGER NOT NULL REFERENCES item(id),
price REAL NOT NULL,
valid_from TIMESTAMP NOT NULL DEFAULT now(),
valid_to TIMESTAMP,
PRIMARY KEY(item_id, price, valid_from)
);
CREATE TABLE IF NOT EXISTS order_item (
item_id INTEGER NOT NULL REFERENCES item(id),
order_id INTEGER NOT NULL REFERENCES order_record(id),
quantity INTEGER NOT NULL,
made INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL DEFAULT now(),
PRIMARY KEY (item_id, order_id)
);
CREATE TABLE IF NOT EXISTS label (
id SERIAL PRIMARY KEY,
label_name TEXT NOT NULL,
label_color INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS order_label (
order_id INTEGER NOT NULL REFERENCES order_record(id),
label_id INTEGER NOT NULL REFERENCES label(id)
);