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, metadata";
27
28pub const TASK_COLUMNS_PREFIXED: &str =
33 "t.id, t.parent_id, t.name, t.spec, t.status, t.complexity, t.priority, t.first_todo_at, t.first_doing_at, t.first_done_at, t.active_form, t.owner, t.metadata";
34
35pub const TASK_COLUMNS_NO_SPEC: &str =
41 "id, parent_id, name, NULL as spec, status, complexity, priority, first_todo_at, first_doing_at, first_done_at, active_form, owner, metadata";
42
43pub const SELECT_TASK_FULL: &str = const_format::formatcp!("SELECT {} FROM tasks", TASK_COLUMNS);
47
48pub const SELECT_TASK_NO_SPEC: &str =
52 const_format::formatcp!("SELECT {} FROM tasks WHERE 1=1", TASK_COLUMNS_NO_SPEC);
53
54pub const CHECK_TASK_EXISTS: &str =
56 "SELECT EXISTS(SELECT 1 FROM tasks WHERE id = ? AND deleted_at IS NULL)";
57
58pub const SELECT_TASK_NAME: &str = "SELECT name FROM tasks WHERE id = ? AND deleted_at IS NULL";
60
61pub const SELECT_TASK_NAME_PARENT: &str =
63 "SELECT name, parent_id FROM tasks WHERE id = ? AND deleted_at IS NULL";
64
65pub const SELECT_TASK_PARENT_ID: &str =
67 "SELECT parent_id FROM tasks WHERE id = ? AND deleted_at IS NULL";
68
69pub const COUNT_TASKS_TOTAL: &str = "SELECT COUNT(*) FROM tasks WHERE deleted_at IS NULL";
71
72pub const COUNT_INCOMPLETE_CHILDREN: &str =
74 "SELECT COUNT(*) FROM tasks WHERE parent_id = ? AND status != 'done' AND deleted_at IS NULL";
75
76pub const COUNT_INCOMPLETE_CHILDREN_EXCLUDE: &str =
78 "SELECT COUNT(*) FROM tasks WHERE parent_id = ? AND status != 'done' AND id != ? AND deleted_at IS NULL";
79
80pub const COUNT_CHILDREN_TOTAL: &str =
82 "SELECT COUNT(*) FROM tasks WHERE parent_id = ? AND deleted_at IS NULL";
83
84pub const COUNT_TASKS_DOING: &str =
86 "SELECT COUNT(*) FROM tasks WHERE status = 'doing' AND deleted_at IS NULL";
87
88pub const COUNT_TASKS_INCOMPLETE: &str =
90 "SELECT COUNT(*) FROM tasks WHERE status IN ('todo', 'doing') AND deleted_at IS NULL";
91
92pub const COUNT_INCOMPLETE_TASKS_EXCLUDE: &str =
94 "SELECT COUNT(*) FROM tasks WHERE status != 'done' AND id != ? AND deleted_at IS NULL";
95
96pub const EVENT_COLUMNS: &str = "id, task_id, timestamp, log_type, discussion_data";
104
105pub const SELECT_EVENT_FULL: &str = const_format::formatcp!("SELECT {} FROM events", EVENT_COLUMNS);
109
110pub const SELECT_EVENT_BY_ID: &str =
112 const_format::formatcp!("SELECT {} FROM events WHERE id = ?", EVENT_COLUMNS);
113
114pub const SELECT_EVENT_BASE: &str =
116 const_format::formatcp!("SELECT {} FROM events WHERE 1=1", EVENT_COLUMNS);
117
118pub const COUNT_EVENTS_TOTAL: &str = "SELECT COUNT(*) FROM events";
120
121pub const COUNT_EVENTS_FOR_TASK: &str = "SELECT COUNT(*) FROM events WHERE task_id = ?";
123
124pub const CHECK_TASK_EXISTS_FOR_EVENT: &str = CHECK_TASK_EXISTS;
126
127pub const SELECT_TASKS_FTS_BASE: &str = "SELECT rowid FROM tasks_fts WHERE ";
133
134pub const COUNT_TASKS_FTS: &str = "SELECT COUNT(*) FROM tasks_fts WHERE name MATCH ?";
136
137#[cfg(test)]
142mod tests {
143 use super::*;
144
145 #[test]
146 fn test_task_columns_format() {
147 assert!(TASK_COLUMNS.contains("id"));
148 assert!(TASK_COLUMNS.contains("parent_id"));
149 assert!(TASK_COLUMNS.contains("spec"));
150 assert!(TASK_COLUMNS.contains("active_form"));
151 }
152
153 #[test]
154 fn test_task_columns_no_spec_format() {
155 assert!(TASK_COLUMNS_NO_SPEC.contains("NULL as spec"));
156 assert!(TASK_COLUMNS_NO_SPEC.contains("active_form"));
157 }
158
159 #[test]
160 fn test_event_columns_format() {
161 assert!(EVENT_COLUMNS.contains("id"));
162 assert!(EVENT_COLUMNS.contains("task_id"));
163 assert!(EVENT_COLUMNS.contains("discussion_data"));
164 }
165
166 #[test]
167 fn test_select_task_full() {
168 assert_eq!(
169 SELECT_TASK_FULL,
170 "SELECT id, parent_id, name, spec, status, complexity, priority, first_todo_at, first_doing_at, first_done_at, active_form, owner, metadata FROM tasks"
171 );
172 }
173
174 #[test]
175 fn test_select_event_by_id() {
176 assert_eq!(
177 SELECT_EVENT_BY_ID,
178 "SELECT id, task_id, timestamp, log_type, discussion_data FROM events WHERE id = ?"
179 );
180 }
181
182 #[test]
183 fn test_check_task_exists() {
184 assert_eq!(
185 CHECK_TASK_EXISTS,
186 "SELECT EXISTS(SELECT 1 FROM tasks WHERE id = ? AND deleted_at IS NULL)"
187 );
188 }
189}