diff --git a/backend/sql/version_1.sql b/backend/sql/version_1.sql index 21b1a89..c73ab94 100644 --- a/backend/sql/version_1.sql +++ b/backend/sql/version_1.sql @@ -111,15 +111,17 @@ CREATE TABLE [Image] ( CREATE TABLE [Tag] ( [id] INTEGER PRIMARY KEY, [name] TEXT NOT NULL, - [lang] TEXT NOT NULL DEFAULT 'en', + + -- Not needed, the lang is defined by the recipes linked to it + -- (more than one language can be associaded to a tag). + -- [lang] TEXT NOT NULL DEFAULT 'en', CHECK ( - length([name]) <= 31 AND - length([lang]) = 2 + length([name]) <= 31 ) ) STRICT; -CREATE UNIQUE INDEX [Tag_name_lang_index] ON [Tag]([name], [lang]); +CREATE UNIQUE INDEX [Tag_name_index] ON [Tag]([name]); CREATE TABLE [RecipeTag] ( [id] INTEGER PRIMARY KEY, @@ -133,6 +135,18 @@ CREATE TABLE [RecipeTag] ( FOREIGN KEY([tag_id]) REFERENCES [Tag]([id]) ON DELETE CASCADE ) STRICT; +CREATE INDEX [RecipeTag_tag_id_index] ON [RecipeTag]([tag_id]); + +-- Delete all tags without references. +CREATE TRIGGER [RecipeTag_trigger_delete] +AFTER DELETE +ON [RecipeTag] +BEGIN + DELETE FROM [Tag] WHERE + [id] = OLD.[tag_id] AND + (SELECT COUNT(*) = 0 FROM [RecipeTag] WHERE [tag_id] = OLD.[tag_id]); +END; + CREATE TABLE [Group] ( [id] INTEGER PRIMARY KEY,