home · contact · privacy
Add Todo/Process.blockers for Conditions that block rather than enable.
[plomtask] / migrations / init_4.sql
1 CREATE TABLE condition_descriptions (
2     parent INTEGER NOT NULL,
3     timestamp TEXT NOT NULL,
4     description TEXT NOT NULL,
5     PRIMARY KEY (parent, timestamp),
6     FOREIGN KEY (parent) REFERENCES conditions(id)
7 );
8 CREATE TABLE condition_titles (
9     parent INTEGER NOT NULL,
10     timestamp TEXT NOT NULL,
11     title TEXT NOT NULL,
12     PRIMARY KEY (parent, timestamp),
13     FOREIGN KEY (parent) 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     id TEXT PRIMARY KEY,
21     comment TEXT NOT NULL
22 );
23 CREATE TABLE process_blockers (
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_conditions (
31     process INTEGER NOT NULL,
32     condition INTEGER NOT NULL,
33     PRIMARY KEY (process, condition),
34     FOREIGN KEY (process) REFERENCES processes(id),
35     FOREIGN KEY (condition) REFERENCES conditions(id)
36 );
37 CREATE TABLE process_descriptions (
38     parent INTEGER NOT NULL,
39     timestamp TEXT NOT NULL,
40     description TEXT NOT NULL,
41     PRIMARY KEY (parent, timestamp),
42     FOREIGN KEY (parent) REFERENCES processes(id)
43 );
44 CREATE TABLE process_disables (
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_efforts (
52     parent INTEGER NOT NULL,
53     timestamp TEXT NOT NULL,
54     effort REAL NOT NULL,
55     PRIMARY KEY (parent, timestamp),
56     FOREIGN KEY (parent) REFERENCES processes(id)
57 );
58 CREATE TABLE process_enables (
59     process INTEGER NOT NULL,
60     condition INTEGER NOT NULL,
61     PRIMARY KEY(process, condition),
62     FOREIGN KEY (process) REFERENCES processes(id),
63     FOREIGN KEY (condition) REFERENCES conditions(id)
64 );
65 CREATE TABLE process_steps (
66     id INTEGER PRIMARY KEY,
67     owner INTEGER NOT NULL,
68     step_process INTEGER NOT NULL,
69     parent_step INTEGER,
70     FOREIGN KEY (owner) REFERENCES processes(id),
71     FOREIGN KEY (step_process) REFERENCES processes(id),
72     FOREIGN KEY (parent_step) REFERENCES process_steps(step_id)
73 );
74 CREATE TABLE process_titles (
75     parent INTEGER NOT NULL,
76     timestamp TEXT NOT NULL,
77     title TEXT NOT NULL,
78     PRIMARY KEY (parent, timestamp),
79     FOREIGN KEY (parent) REFERENCES processes(id)
80 );
81 CREATE TABLE processes (
82     id INTEGER PRIMARY KEY,
83     calendarize BOOLEAN NOT NULL DEFAULT FALSE
84 );
85 CREATE TABLE todo_blockers (
86     todo INTEGER NOT NULL,
87     condition INTEGER NOT NULL,
88     PRIMARY KEY (todo, condition),
89     FOREIGN KEY (todo) REFERENCES todos(id),
90     FOREIGN KEY (condition) REFERENCES conditions(id)
91 );
92 CREATE TABLE todo_children (
93     parent INTEGER NOT NULL,
94     child INTEGER NOT NULL,
95     PRIMARY KEY (parent, child),
96     FOREIGN KEY (parent) REFERENCES todos(id),
97     FOREIGN KEY (child) REFERENCES todos(id)
98 );
99 CREATE TABLE todo_conditions (
100     todo INTEGER NOT NULL,
101     condition INTEGER NOT NULL,
102     PRIMARY KEY(todo, condition),
103     FOREIGN KEY (todo) REFERENCES todos(id),
104     FOREIGN KEY (condition) REFERENCES conditions(id)
105 );
106 CREATE TABLE todo_disables (
107     todo INTEGER NOT NULL,
108     condition INTEGER NOT NULL,
109     PRIMARY KEY(todo, condition),
110     FOREIGN KEY (todo) REFERENCES todos(id),
111     FOREIGN KEY (condition) REFERENCES conditions(id)
112 );
113 CREATE TABLE todo_enables (
114     todo INTEGER NOT NULL,
115     condition INTEGER NOT NULL,
116     PRIMARY KEY(todo, condition),
117     FOREIGN KEY (todo) REFERENCES todos(id),
118     FOREIGN KEY (condition) REFERENCES conditions(id)
119 );
120 CREATE TABLE todos (
121     id INTEGER PRIMARY KEY,
122     process INTEGER NOT NULL,
123     is_done BOOLEAN NOT NULL,
124     day TEXT NOT NULL,
125     comment TEXT NOT NULL DEFAULT "",
126     effort REAL,
127     calendarize BOOLEAN NOT NULL DEFAULT FALSE,
128     FOREIGN KEY (process) REFERENCES processes(id),
129     FOREIGN KEY (day) REFERENCES days(id)
130 );