home · contact · privacy
Add Conditions for Todos/Processes to be met or undone by other Todos.
[plomtask] / scripts / init.sql
1 CREATE TABLE condition_descriptions (
2     parent_id INTEGER NOT NULL,
3     timestamp TEXT NOT NULL,
4     description TEXT NOT NULL,
5     PRIMARY KEY (parent_id, timestamp),
6     FOREIGN KEY (parent_id) REFERENCES conditions(id)
7 );
8 CREATE TABLE condition_titles (
9     parent_id INTEGER NOT NULL,
10     timestamp TEXT NOT NULL,
11     title TEXT NOT NULL,
12     PRIMARY KEY (parent_id, timestamp),
13     FOREIGN KEY (parent_id) REFERENCES conditions(id)
14 );
15 CREATE TABLE conditions (
16     id INTEGER PRIMARY KEY,
17     is_active BOOLEAN NOT NULL
18 );
19 CREATE TABLE days (
20     date TEXT PRIMARY KEY,
21     comment TEXT NOT NULL
22 );
23 CREATE TABLE process_conditions (
24     process INTEGER NOT NULL,
25     condition INTEGER NOT NULL,
26     PRIMARY KEY (process, condition),
27     FOREIGN KEY (process) REFERENCES processes(id),
28     FOREIGN KEY (condition) REFERENCES conditions(id)
29 );
30 CREATE TABLE process_descriptions (
31     parent_id INTEGER NOT NULL,
32     timestamp TEXT NOT NULL,
33     description TEXT NOT NULL,
34     PRIMARY KEY (parent_id, timestamp),
35     FOREIGN KEY (parent_id) REFERENCES processes(id)
36 );
37 CREATE TABLE process_efforts (
38     parent_id INTEGER NOT NULL,
39     timestamp TEXT NOT NULL,
40     effort REAL NOT NULL,
41     PRIMARY KEY (parent_id, timestamp),
42     FOREIGN KEY (parent_id) REFERENCES processes(id)
43 );
44 CREATE TABLE process_fulfills (
45     process INTEGER NOT NULL,
46     condition INTEGER NOT NULL,
47     PRIMARY KEY(process, condition),
48     FOREIGN KEY (process) REFERENCES processes(id),
49     FOREIGN KEY (condition) REFERENCES conditions(id)
50 );
51 CREATE TABLE process_steps (
52     step_id INTEGER PRIMARY KEY,
53     owner_id INTEGER NOT NULL,
54     step_process_id INTEGER NOT NULL,
55     parent_step_id INTEGER,
56     FOREIGN KEY (owner_id) REFERENCES processes(id),
57     FOREIGN KEY (step_process_id) REFERENCES processes(id),
58     FOREIGN KEY (parent_step_id) REFERENCES process_steps(step_id)
59 );
60 CREATE TABLE process_titles (
61     parent_id INTEGER NOT NULL,
62     timestamp TEXT NOT NULL,
63     title TEXT NOT NULL,
64     PRIMARY KEY (parent_id, timestamp),
65     FOREIGN KEY (parent_id) REFERENCES processes(id)
66 );
67 CREATE TABLE process_undoes (
68     process INTEGER NOT NULL,
69     condition INTEGER NOT NULL,
70     PRIMARY KEY(process, condition),
71     FOREIGN KEY (process) REFERENCES processes(id),
72     FOREIGN KEY (condition) REFERENCES conditions(id)
73 );
74 CREATE TABLE processes (
75     id INTEGER PRIMARY KEY
76 );
77 CREATE TABLE todo_children (
78     parent INTEGER NOT NULL,
79     child INTEGER NOT NULL,
80     PRIMARY KEY (parent, child),
81     FOREIGN KEY (parent) REFERENCES todos(id),
82     FOREIGN KEY (child) REFERENCES todos(id)
83 );
84 CREATE TABLE todo_conditions (
85     todo INTEGER NOT NULL,
86     condition INTEGER NOT NULL,
87     PRIMARY KEY(todo, condition),
88     FOREIGN KEY (todo) REFERENCES todos(id),
89     FOREIGN KEY (condition) REFERENCES conditions(id)
90 );
91 CREATE TABLE todo_fulfills (
92     todo INTEGER NOT NULL,
93     condition INTEGER NOT NULL,
94     PRIMARY KEY(todo, condition),
95     FOREIGN KEY (todo) REFERENCES todos(id),
96     FOREIGN KEY (condition) REFERENCES conditions(id)
97 );
98 CREATE TABLE todo_undoes (
99     todo INTEGER NOT NULL,
100     condition INTEGER NOT NULL,
101     PRIMARY KEY(todo, condition),
102     FOREIGN KEY (todo) REFERENCES todos(id),
103     FOREIGN KEY (condition) REFERENCES conditions(id)
104 );
105 CREATE TABLE todos (
106     id INTEGER PRIMARY KEY,
107     process_id INTEGER NOT NULL,
108     is_done BOOLEAN NOT NULL,
109     day TEXT NOT NULL,
110     FOREIGN KEY (process_id) REFERENCES processes(id),
111     FOREIGN KEY (day) REFERENCES days(date)
112 );