Enhance data validation with additional CHECK constraints for User, Recipe, and ShoppingEntry tables; add lang field to Tag table.
This commit is contained in:
parent
eb47844f05
commit
1b85c275e2
1 changed files with 26 additions and 19 deletions
|
|
@ -35,8 +35,10 @@ CREATE TABLE [User] (
|
|||
CHECK (
|
||||
length([email]) <= 255 AND
|
||||
length([name]) <= 255 AND
|
||||
length([lang]) = 2 AND
|
||||
length([password]) <= 255 AND
|
||||
[first_day_of_the_week] >= 0 AND [first_day_of_the_week] <= 6
|
||||
[first_day_of_the_week] >= 0 AND [first_day_of_the_week] <= 6 AND
|
||||
([is_admin] = TRUE OR [is_admin] = FALSE)
|
||||
)
|
||||
) STRICT;
|
||||
|
||||
|
|
@ -80,17 +82,19 @@ CREATE TABLE [Recipe] (
|
|||
[creation_datetime] TEXT NOT NULL,
|
||||
|
||||
CHECK (
|
||||
length([lang]) = 2 AND
|
||||
length([title]) <= 255 AND
|
||||
length([lang]) = 2 AND
|
||||
length([description]) <= 65535 AND
|
||||
[difficulty] >= 0 AND [difficulty] <= 3
|
||||
[difficulty] >= 0 AND [difficulty] <= 3 AND
|
||||
[servings] > 0 AND [servings] <= 255 AND
|
||||
([is_public] = TRUE OR [is_public] = FALSE)
|
||||
),
|
||||
|
||||
FOREIGN KEY([user_id]) REFERENCES [User]([id]) ON DELETE SET NULL
|
||||
) STRICT;
|
||||
|
||||
CREATE TABLE [Image] (
|
||||
[Id] INTEGER PRIMARY KEY,
|
||||
[id] INTEGER PRIMARY KEY,
|
||||
[recipe_id] INTEGER NOT NULL,
|
||||
[name] TEXT NOT NULL DEFAULT '',
|
||||
[description] TEXT NOT NULL DEFAULT '',
|
||||
|
|
@ -104,6 +108,19 @@ CREATE TABLE [Image] (
|
|||
FOREIGN KEY([recipe_id]) REFERENCES [Recipe]([id]) ON DELETE CASCADE
|
||||
) STRICT;
|
||||
|
||||
CREATE TABLE [Tag] (
|
||||
[id] INTEGER PRIMARY KEY,
|
||||
[name] TEXT NOT NULL,
|
||||
[lang] TEXT NOT NULL DEFAULT 'en',
|
||||
|
||||
CHECK (
|
||||
length([name]) <= 31 AND
|
||||
length([lang]) = 2
|
||||
)
|
||||
) STRICT;
|
||||
|
||||
CREATE UNIQUE INDEX [Tag_name_lang_index] ON [Tag]([name], [lang]);
|
||||
|
||||
CREATE TABLE [RecipeTag] (
|
||||
[id] INTEGER PRIMARY KEY,
|
||||
|
||||
|
|
@ -116,17 +133,6 @@ CREATE TABLE [RecipeTag] (
|
|||
FOREIGN KEY([tag_id]) REFERENCES [Tag]([id]) ON DELETE CASCADE
|
||||
) STRICT;
|
||||
|
||||
CREATE TABLE [Tag] (
|
||||
[id] INTEGER PRIMARY KEY,
|
||||
[name] TEXT NOT NULL,
|
||||
|
||||
CHECK (
|
||||
length([name]) <= 31
|
||||
)
|
||||
) STRICT;
|
||||
|
||||
CREATE UNIQUE INDEX [Tag_name_lang_index] ON [Tag]([name]);
|
||||
|
||||
CREATE TABLE [Group] (
|
||||
[id] INTEGER PRIMARY KEY,
|
||||
|
||||
|
|
@ -161,7 +167,7 @@ CREATE TABLE [Step] (
|
|||
FOREIGN KEY(group_id) REFERENCES [Group](id) ON DELETE CASCADE
|
||||
) STRICT;
|
||||
|
||||
CREATE INDEX [Step_order_index] ON [Group]([order]);
|
||||
CREATE INDEX [Step_order_index] ON [Step]([order]);
|
||||
|
||||
CREATE TABLE [Ingredient] (
|
||||
[id] INTEGER PRIMARY KEY,
|
||||
|
|
@ -196,7 +202,7 @@ CREATE TABLE [RecipeScheduled] (
|
|||
|
||||
FOREIGN KEY([user_id]) REFERENCES [User]([id]) ON DELETE CASCADE,
|
||||
FOREIGN KEY([recipe_id]) REFERENCES [Recipe]([id]) ON DELETE CASCADE
|
||||
);
|
||||
) STRICT;
|
||||
|
||||
CREATE INDEX [RecipeScheduled_user_id_index] ON [RecipeScheduled]([user_id]);
|
||||
CREATE INDEX [RecipeScheduled_date_index] ON [RecipeScheduled]([date]);
|
||||
|
|
@ -219,13 +225,14 @@ CREATE TABLE [ShoppingEntry] (
|
|||
[servings] INTEGER,
|
||||
|
||||
CHECK (
|
||||
length([name]) <= 255
|
||||
length([name]) <= 255 AND
|
||||
([is_checked] = TRUE OR [is_checked] = FALSE)
|
||||
),
|
||||
|
||||
FOREIGN KEY([user_id]) REFERENCES [User]([id]) ON DELETE CASCADE,
|
||||
FOREIGN KEY([ingredient_id]) REFERENCES [Ingredient]([id]) ON DELETE SET NULL,
|
||||
FOREIGN KEY([recipe_scheduled_id]) REFERENCES [RecipeScheduled]([id]) ON DELETE SET NULL
|
||||
);
|
||||
) STRICT;
|
||||
|
||||
CREATE INDEX [ShoppingEntry_user_id_index] ON [ShoppingEntry]([user_id]);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue