Split db::Connection implementation in submodules (db::user and db::recipe).

This commit is contained in:
Greg Burri 2024-12-18 23:10:19 +01:00
parent 4248d11aa9
commit fce4eade73
17 changed files with 1307 additions and 1234 deletions

View file

@ -1,4 +1,4 @@
INSERT INTO [User] ([id], [email], [name], [password], [creation_datetime], [validation_token])
INSERT INTO [User] ([id], [email], [name], [password], [validation_token_datetime], [validation_token])
VALUES (
1,
'paul@atreides.com',
@ -8,7 +8,7 @@ VALUES (
NULL
);
INSERT INTO [User] ([id], [email], [name], [password], [creation_datetime], [validation_token])
INSERT INTO [User] ([id], [email], [name], [password], [validation_token_datetime], [validation_token])
VALUES (
2,
'alia@atreides.com',

View file

@ -47,7 +47,9 @@ CREATE TABLE [Recipe] (
[id] INTEGER PRIMARY KEY,
[user_id] INTEGER, -- Can be null if a user is deleted.
[title] TEXT NOT NULL,
[estimate_time] INTEGER,
-- https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
[lang] TEXT NOT NULL DEFAULT 'en',
[estimate_time] INTEGER, -- in [s].
[description] TEXT NOT NULL DEFAULT '',
[difficulty] INTEGER NOT NULL DEFAULT 0,
[servings] INTEGER DEFAULT 4,
@ -61,7 +63,7 @@ CREATE TABLE [Image] (
[recipe_id] INTEGER NOT NULL,
[name] TEXT NOT NULL DEFAULT '',
[description] TEXT NOT NULL DEFAULT '',
[image] BLOB,
[image] BLOB NOT NULL,
FOREIGN KEY([recipe_id]) REFERENCES [Recipe]([id]) ON DELETE CASCADE
) STRICT;
@ -80,26 +82,30 @@ CREATE TABLE [RecipeTag] (
CREATE TABLE [Tag] (
[id] INTEGER PRIMARY KEY,
[name] TEXT NOT NULL
[name] TEXT NOT NULL,
-- https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes
[lang] TEXT NOT NULL DEFAULT 'en'
) STRICT;
CREATE UNIQUE INDEX [Tag_name_index] ON [Tag] ([name]);
CREATE UNIQUE INDEX [Tag_name_lang_index] ON [Tag] ([name], [lang]);
CREATE TABLE [Ingredient] (
[id] INTEGER PRIMARY KEY,
[name] TEXT NOT NULL,
[comment] TEXT NOT NULL DEFAULT '',
[quantity_value] REAL,
[quantity_unit] TEXT NOT NULL DEFAULT '',
[input_group_id] INTEGER NOT NULL,
[input_step_id] INTEGER NOT NULL,
FOREIGN KEY([input_group_id]) REFERENCES [Group]([id]) ON DELETE CASCADE
FOREIGN KEY([input_step_id]) REFERENCES [Step]([id]) ON DELETE CASCADE
) STRICT;
CREATE TABLE [Group] (
[id] INTEGER PRIMARY KEY,
[order] INTEGER NOT NULL DEFAULT 0,
[recipe_id] INTEGER,
[recipe_id] INTEGER NOT NULL,
[name] TEXT NOT NULL DEFAULT '',
[comment] TEXT NOT NULL DEFAULT '',
FOREIGN KEY([recipe_id]) REFERENCES [Recipe]([id]) ON DELETE CASCADE
) STRICT;
@ -117,14 +123,14 @@ CREATE TABLE [Step] (
CREATE INDEX [Step_order_index] ON [Group]([order]);
CREATE TABLE [IntermediateSubstance] (
[id] INTEGER PRIMARY KEY,
[name] TEXT NOT NULL DEFAULT '',
[quantity_value] REAL,
[quantity_unit] TEXT NOT NULL DEFAULT '',
[output_group_id] INTEGER NOT NULL,
[input_group_id] INTEGER NOT NULL,
-- CREATE TABLE [IntermediateSubstance] (
-- [id] INTEGER PRIMARY KEY,
-- [name] TEXT NOT NULL DEFAULT '',
-- [quantity_value] REAL,
-- [quantity_unit] TEXT NOT NULL DEFAULT '',
-- [output_group_id] INTEGER NOT NULL,
-- [input_group_id] INTEGER NOT NULL,
FOREIGN KEY([output_group_id]) REFERENCES [group]([id]) ON DELETE CASCADE,
FOREIGN KEY([input_group_id]) REFERENCES [group]([id]) ON DELETE CASCADE
) STRICT;
-- FOREIGN KEY([output_group_id]) REFERENCES [group]([id]) ON DELETE CASCADE,
-- FOREIGN KEY([input_group_id]) REFERENCES [group]([id]) ON DELETE CASCADE
-- ) STRICT;