home · contact · privacy
Add Conditions for Todos/Processes to be met or undone by other Todos.
[plomtask] / scripts / init.sql
index 6dca3729e8ef6f7408c32ecc1466d674fcaa0c41..807e1e7a0fc06b3da97204e99a23b2342306272a 100644 (file)
@@ -1,20 +1,52 @@
+CREATE TABLE condition_descriptions (
+    parent_id INTEGER NOT NULL,
+    timestamp TEXT NOT NULL,
+    description TEXT NOT NULL,
+    PRIMARY KEY (parent_id, timestamp),
+    FOREIGN KEY (parent_id) REFERENCES conditions(id)
+);
+CREATE TABLE condition_titles (
+    parent_id INTEGER NOT NULL,
+    timestamp TEXT NOT NULL,
+    title TEXT NOT NULL,
+    PRIMARY KEY (parent_id, timestamp),
+    FOREIGN KEY (parent_id) REFERENCES conditions(id)
+);
+CREATE TABLE conditions (
+    id INTEGER PRIMARY KEY,
+    is_active BOOLEAN NOT NULL
+);
 CREATE TABLE days (
     date TEXT PRIMARY KEY,
     comment TEXT NOT NULL
 );
+CREATE TABLE process_conditions (
+    process INTEGER NOT NULL,
+    condition INTEGER NOT NULL,
+    PRIMARY KEY (process, condition),
+    FOREIGN KEY (process) REFERENCES processes(id),
+    FOREIGN KEY (condition) REFERENCES conditions(id)
+);
 CREATE TABLE process_descriptions (
-    process_id INTEGER NOT NULL,
+    parent_id INTEGER NOT NULL,
     timestamp TEXT NOT NULL,
     description TEXT NOT NULL,
-    PRIMARY KEY (process_id, timestamp),
-    FOREIGN KEY (process_id) REFERENCES processes(id)
+    PRIMARY KEY (parent_id, timestamp),
+    FOREIGN KEY (parent_id) REFERENCES processes(id)
 );
 CREATE TABLE process_efforts (
-    process_id INTEGER NOT NULL,
+    parent_id INTEGER NOT NULL,
     timestamp TEXT NOT NULL,
     effort REAL NOT NULL,
-    PRIMARY KEY (process_id, timestamp),
-    FOREIGN KEY (process_id) REFERENCES processes(id)
+    PRIMARY KEY (parent_id, timestamp),
+    FOREIGN KEY (parent_id) REFERENCES processes(id)
+);
+CREATE TABLE process_fulfills (
+    process INTEGER NOT NULL,
+    condition INTEGER NOT NULL,
+    PRIMARY KEY(process, condition),
+    FOREIGN KEY (process) REFERENCES processes(id),
+    FOREIGN KEY (condition) REFERENCES conditions(id)
 );
 CREATE TABLE process_steps (
     step_id INTEGER PRIMARY KEY,
@@ -26,15 +58,50 @@ CREATE TABLE process_steps (
     FOREIGN KEY (parent_step_id) REFERENCES process_steps(step_id)
 );
 CREATE TABLE process_titles (
-    process_id INTEGER NOT NULL,
+    parent_id INTEGER NOT NULL,
     timestamp TEXT NOT NULL,
     title TEXT NOT NULL,
-    PRIMARY KEY (process_id, timestamp),
-    FOREIGN KEY (process_id) REFERENCES processes(id)
+    PRIMARY KEY (parent_id, timestamp),
+    FOREIGN KEY (parent_id) REFERENCES processes(id)
+);
+CREATE TABLE process_undoes (
+    process INTEGER NOT NULL,
+    condition INTEGER NOT NULL,
+    PRIMARY KEY(process, condition),
+    FOREIGN KEY (process) REFERENCES processes(id),
+    FOREIGN KEY (condition) REFERENCES conditions(id)
 );
 CREATE TABLE processes (
     id INTEGER PRIMARY KEY
 );
+CREATE TABLE todo_children (
+    parent INTEGER NOT NULL,
+    child INTEGER NOT NULL,
+    PRIMARY KEY (parent, child),
+    FOREIGN KEY (parent) REFERENCES todos(id),
+    FOREIGN KEY (child) REFERENCES todos(id)
+);
+CREATE TABLE todo_conditions (
+    todo INTEGER NOT NULL,
+    condition INTEGER NOT NULL,
+    PRIMARY KEY(todo, condition),
+    FOREIGN KEY (todo) REFERENCES todos(id),
+    FOREIGN KEY (condition) REFERENCES conditions(id)
+);
+CREATE TABLE todo_fulfills (
+    todo INTEGER NOT NULL,
+    condition INTEGER NOT NULL,
+    PRIMARY KEY(todo, condition),
+    FOREIGN KEY (todo) REFERENCES todos(id),
+    FOREIGN KEY (condition) REFERENCES conditions(id)
+);
+CREATE TABLE todo_undoes (
+    todo INTEGER NOT NULL,
+    condition INTEGER NOT NULL,
+    PRIMARY KEY(todo, condition),
+    FOREIGN KEY (todo) REFERENCES todos(id),
+    FOREIGN KEY (condition) REFERENCES conditions(id)
+);
 CREATE TABLE todos (
     id INTEGER PRIMARY KEY,
     process_id INTEGER NOT NULL,