intent_engine/
sql_constants.rs1pub const TASK_COLUMNS: &str =
26 "id, parent_id, name, spec, status, complexity, priority, first_todo_at, first_doing_at, first_done_at, active_form, owner";
27
28pub const TASK_COLUMNS_NO_SPEC: &str =
34 "id, parent_id, name, NULL as spec, status, complexity, priority, first_todo_at, first_doing_at, first_done_at, active_form, owner";
35
36pub const SELECT_TASK_FULL: &str = const_format::formatcp!("SELECT {} FROM tasks", TASK_COLUMNS);
40
41pub const SELECT_TASK_NO_SPEC: &str =
45 const_format::formatcp!("SELECT {} FROM tasks WHERE 1=1", TASK_COLUMNS_NO_SPEC);
46
47pub const CHECK_TASK_EXISTS: &str = "SELECT EXISTS(SELECT 1 FROM tasks WHERE id = ?)";
49
50pub const SELECT_TASK_NAME: &str = "SELECT name FROM tasks WHERE id = ?";
52
53pub const SELECT_TASK_NAME_PARENT: &str = "SELECT name, parent_id FROM tasks WHERE id = ?";
55
56pub const SELECT_TASK_PARENT_ID: &str = "SELECT parent_id FROM tasks WHERE id = ?";
58
59pub const COUNT_TASKS_TOTAL: &str = "SELECT COUNT(*) FROM tasks";
61
62pub const COUNT_INCOMPLETE_CHILDREN: &str =
64 "SELECT COUNT(*) FROM tasks WHERE parent_id = ? AND status != 'done'";
65
66pub const COUNT_INCOMPLETE_CHILDREN_EXCLUDE: &str =
68 "SELECT COUNT(*) FROM tasks WHERE parent_id = ? AND status != 'done' AND id != ?";
69
70pub const COUNT_CHILDREN_TOTAL: &str = "SELECT COUNT(*) FROM tasks WHERE parent_id = ?";
72
73pub const COUNT_TASKS_DOING: &str = "SELECT COUNT(*) FROM tasks WHERE status = 'doing'";
75
76pub const COUNT_TASKS_INCOMPLETE: &str =
78 "SELECT COUNT(*) FROM tasks WHERE status IN ('todo', 'doing')";
79
80pub const COUNT_INCOMPLETE_TASKS_EXCLUDE: &str =
82 "SELECT COUNT(*) FROM tasks WHERE status != 'done' AND id != ?";
83
84pub const EVENT_COLUMNS: &str = "id, task_id, timestamp, log_type, discussion_data";
92
93pub const SELECT_EVENT_FULL: &str = const_format::formatcp!("SELECT {} FROM events", EVENT_COLUMNS);
97
98pub const SELECT_EVENT_BY_ID: &str =
100 const_format::formatcp!("SELECT {} FROM events WHERE id = ?", EVENT_COLUMNS);
101
102pub const SELECT_EVENT_BASE: &str =
104 const_format::formatcp!("SELECT {} FROM events WHERE 1=1", EVENT_COLUMNS);
105
106pub const COUNT_EVENTS_TOTAL: &str = "SELECT COUNT(*) FROM events";
108
109pub const COUNT_EVENTS_FOR_TASK: &str = "SELECT COUNT(*) FROM events WHERE task_id = ?";
111
112pub const CHECK_TASK_EXISTS_FOR_EVENT: &str = CHECK_TASK_EXISTS;
114
115pub const SELECT_TASKS_FTS_BASE: &str = "SELECT rowid FROM tasks_fts WHERE ";
121
122pub const COUNT_TASKS_FTS: &str = "SELECT COUNT(*) FROM tasks_fts WHERE name MATCH ?";
124
125#[cfg(test)]
130mod tests {
131 use super::*;
132
133 #[test]
134 fn test_task_columns_format() {
135 assert!(TASK_COLUMNS.contains("id"));
136 assert!(TASK_COLUMNS.contains("parent_id"));
137 assert!(TASK_COLUMNS.contains("spec"));
138 assert!(TASK_COLUMNS.contains("active_form"));
139 }
140
141 #[test]
142 fn test_task_columns_no_spec_format() {
143 assert!(TASK_COLUMNS_NO_SPEC.contains("NULL as spec"));
144 assert!(TASK_COLUMNS_NO_SPEC.contains("active_form"));
145 }
146
147 #[test]
148 fn test_event_columns_format() {
149 assert!(EVENT_COLUMNS.contains("id"));
150 assert!(EVENT_COLUMNS.contains("task_id"));
151 assert!(EVENT_COLUMNS.contains("discussion_data"));
152 }
153
154 #[test]
155 fn test_select_task_full() {
156 assert_eq!(
157 SELECT_TASK_FULL,
158 "SELECT id, parent_id, name, spec, status, complexity, priority, first_todo_at, first_doing_at, first_done_at, active_form, owner FROM tasks"
159 );
160 }
161
162 #[test]
163 fn test_select_event_by_id() {
164 assert_eq!(
165 SELECT_EVENT_BY_ID,
166 "SELECT id, task_id, timestamp, log_type, discussion_data FROM events WHERE id = ?"
167 );
168 }
169
170 #[test]
171 fn test_check_task_exists() {
172 assert_eq!(
173 CHECK_TASK_EXISTS,
174 "SELECT EXISTS(SELECT 1 FROM tasks WHERE id = ?)"
175 );
176 }
177}