recipes/backend/sql/version_1.sql

64 lines
No EOL
1.4 KiB
SQL

-- Version 1 is the initial structure.
CREATE TABLE Version (
id INTEGER PRIMARY KEY,
version INTEGER NOT NULL UNIQUE,
datetime DATETIME
);
CREATE TABLE User (
id INTEGER PRIMARY KEY,
email TEXT NOT NULL,
password TEXT NOT NULL, -- Hashed and salted.
name TEXT NOT NULL
);
CREATE TABLE Recipe (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
estimate_time INTEGER,
description DATETIME,
FOREIGN KEY(user_id) REFERENCES User(id)
);
CREATE TABLE Quantity (
id INTEGER PRIMARY KEY,
value REAL,
unit TEXT
);
CREATE TABLE Ingredient (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
quantity_id INTEGER,
input_step_id INTEGER NOT NULL,
FOREIGN KEY(quantity_id) REFERENCES Quantity(id),
FOREIGN KEY(input_step_id) REFERENCES Step(id)
);
CREATE TABLE [Group] (
id INTEGER PRIMARY KEY,
name TEXT
);
CREATE TABLE Step (
id INTEGER PRIMARY KEY,
action TEXT NOT NULL,
group_id INTEGER NOT NULL,
FOREIGN KEY(group_id) REFERENCES [Group](id)
);
CREATE TABLE IntermediateSubstance (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
quantity_id INTEGER,
output_step_id INTEGER NOT NULL,
input_step_id INTEGER NOT NULL,
FOREIGN KEY(quantity_id) REFERENCES Quantity(id),
FOREIGN KEY(output_step_id) REFERENCES Step(id),
FOREIGN KEY(input_step_id) REFERENCES Step(id)
);