summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2024-02-06 19:58:49 +0100
committerxengineering <me@xengineering.eu>2024-02-08 21:55:41 +0100
commit480d7740a172002fc6b115f9ca4bf73bf7809ead (patch)
tree8c0a973dbf2908f7ca8e4e81fbd9561ae15074e4
parent325a2740e39b7c7937bfae8b76b092dd900fec9a (diff)
downloadceres-db-completion.tar
ceres-db-completion.tar.zst
ceres-db-completion.zip
WIP: model: Rework database modeldb-completion
-rw-r--r--model/sql/migrate.sql79
1 files changed, 66 insertions, 13 deletions
diff --git a/model/sql/migrate.sql b/model/sql/migrate.sql
index 4cbf75b..57f9e1d 100644
--- a/model/sql/migrate.sql
+++ b/model/sql/migrate.sql
@@ -1,14 +1,67 @@
-CREATE TABLE 'recipes' (
- 'id' integer PRIMARY KEY AUTOINCREMENT,
- 'title' text DEFAULT '',
- 'portions' text DEFAULT '', -- FIXME has to be integer
- 'url' text DEFAULT '',
- 'notes' text DEFAULT ''
-);
-
-CREATE TABLE 'recipe_steps' (
- 'id' integer PRIMARY KEY,
- 'recipe_id' integer DEFAULT NULL,
- 'index' integer DEFAULT NULL,
- 'text' text DEFAULT ''
+PRAGMA foreign_keys = ON;
+
+CREATE TABLE instances (
+ id INTEGER PRIMARY KEY,
+ uuid TEXT NOT NULL,
+ name TEXT NOT NULL,
+ is_self BOOLEAN NOT NULL,
+ last_changed INTEGER NOT NULL
+);
+
+CREATE TABLE users (
+ id INTEGER PRIMARY KEY,
+ uuid TEXT NOT NULL,
+ name TEXT NOT NULL,
+ home INTEGER NOT NULL,
+ last_changed INTEGER NOT NULL,
+ FOREIGN KEY(home) REFERENCES instances(id)
+);
+
+CREATE TABLE recipes (
+ id INTEGER PRIMARY KEY,
+ uuid TEXT NOT NULL
+);
+
+CREATE TABLE recipe_versions (
+ id INTEGER PRIMARY KEY,
+ parent INTEGER NOT NULL,
+ recipe INTEGER NOT NULL,
+ author INTEGER NOT NULL,
+ instance INTEGER NOT NULL,
+ language TEXT NOT NULL,
+ title TEXT NOT NULL,
+ portions INTEGER NOT NULL,
+ url TEXT NOT NULL,
+ notes TEXT NOT NULL,
+ last_changed INTEGER NOT NULL,
+ FOREIGN KEY(parent) REFERENCES recipe_versions(id),
+ FOREIGN KEY(recipe) REFERENCES recipes(id),
+ FOREIGN KEY(author) REFERENCES users(id),
+ FOREIGN KEY(instance) REFERENCES instances(id)
+);
+
+CREATE TABLE steps (
+ id INTEGER PRIMARY KEY,
+ text TEXT NOT NULL
+);
+
+CREATE TABLE ingredients (
+ id INTEGER PRIMARY KEY,
+ ingredient_id TEXT NOT NULL,
+ amount REAL NOT NULL,
+ unit INTEGER NOT NULL -- must match unit enum from application code
+);
+
+CREATE TABLE foodstuffs (
+ id INTEGER PRIMARY KEY,
+ uuid TEXT NOT NULL,
+ name TEXT NOT NULL, -- in US english
+ plural TEXT -- in US english or NULL if uncountable
+);
+
+CREATE TABLE products (
+ id INTEGER PRIMARY KEY,
+ uuid TEXT NOT NULL,
+ name TEXT NOT NULL,
+ gtin TEXT
);