77 lines
4.6 KiB
C
77 lines
4.6 KiB
C
#include "include/sql.h"
|
|
|
|
|
|
const char *klist_sql_get(const enum KLIST_SQL sql) {
|
|
switch (sql) {
|
|
case INIT: return
|
|
"create table if not exists users (\n"
|
|
" id integer primary key,\n"
|
|
" name text not null\n"
|
|
");\n"
|
|
"create table if not exists user_logins (\n"
|
|
" id integer primary key,\n"
|
|
" user_id integer not null,\n"
|
|
" local_id integer,\n"
|
|
" foreign key (user_id) references users(id)"
|
|
");\n"
|
|
"create table if not exists user_lists (\n"
|
|
" id integer primary key,\n"
|
|
" user_id integer not null,\n"
|
|
" list_id integer not null,\n"
|
|
" foreign key (user_id) references users(id),\n"
|
|
" foreign key (list_id) references lists(id)\n"
|
|
");\n"
|
|
"create table if not exists lists (\n"
|
|
" id integer primary key,\n"
|
|
" name text not null,\n"
|
|
" desc text,\n"
|
|
" is_preset int not null\n"
|
|
");\n"
|
|
"create table if not exists task_stages (\n"
|
|
" id integer primary key,\n"
|
|
" name text not null,\n"
|
|
" desc text,\n"
|
|
" list_id integer not null,\n"
|
|
" foreign key (list_id) references lists(id)\n"
|
|
");\n"
|
|
"-- this currently enables moving tasks _between lists_ (planned of course)\n"
|
|
"create table if not exists tasks (\n"
|
|
" id integer primary key,\n"
|
|
" name text not null,\n"
|
|
" desc text,\n"
|
|
" stage integer not null,\n"
|
|
" due date,\n"
|
|
" target_stage integer, -- more like target stage\n"
|
|
" foreign key (stage) references task_stages(id),\n"
|
|
" foreign key (target_stage) references task_stages(id)\n"
|
|
")";
|
|
case ADD_LOGIN: return "insert into user_logins (user_id, local_id) values (?1, ?2) on conflict (id) do update set user_id=excluded.user_id, local_id=excluded.local_id returning id";
|
|
case ADD_USER: return "insert into users (name) values (?1) on conflict (id) do update set name=excluded.name returning id";
|
|
case GET_USER: return "select users.*, user_logins.local_id from users inner join user_logins on user_logins.user_id = users.id where users.id = ?1";
|
|
case GET_USER_BY_LOCAL: return "select * from users inner join user_logins on user_logins.user_id = users.id where user_logins.local_id = ?1";
|
|
case GET_USERS: return "select * from users";
|
|
case MOD_USER_NAME: return "update users set name = ?1 where id = ?2";
|
|
case DEL_USER: return "delete from users where id = ?1";
|
|
case ADD_LIST: return "insert into lists (name, desc, is_preset) values (?1, ?2, ?3)";
|
|
case GET_LIST: return "select * from lists where id = ?1";
|
|
case GET_LISTS: return "select * from lists";
|
|
case GET_LISTS_BY_USER: return "select * from lists inner join user_lists on user_lists.list_id = lists.id where user_lists.user_id = ?1";
|
|
case GET_LISTS_BY_USER_NAME: return "select * from lists inner join user_lists on user_lists.list_id = lists.id where user_lists.user_id = ?1 and lists.name like '?2'";
|
|
case MOD_LIST_NAME: return "update lists set name = ?1 where id = ?2";
|
|
case DEL_LIST: return "delete from lists where id = ?1";
|
|
case ADD_STAGE: return "insert into task_stages (name, desc, list_id) values (?1, ?2, ?3)";
|
|
case GET_STAGE: return "select * from task_stages where id = ?1";
|
|
case GET_STAGES_FOR_LIST: return "select * from task_stages where list_id = ?1";
|
|
case DEL_STAGE: return "delete from task_stages where id = ?1";
|
|
case ADD_TASK: return "insert into tasks (name, desc, stage, due, target_stage) values (?1, ?2, ?3, ?4, ?5);";
|
|
case GET_TASK: return "select * from tasks where id = ?1";
|
|
case GET_TASKS: return "select * from tasks;";
|
|
case GET_TASKS_FOR_LIST: return "select tasks.* from tasks join task_stages on task_stages.id = tasks.stage where task_stages.list_id = ?1";
|
|
case GET_TASKS_FOR_LIST_BY_NAME: return "select tasks.* from tasks join task_stages on task_stages.id = tasks.stage where task_stages.list_id = ?1 and tasks.name like ?2";
|
|
case MOD_TASK_NAME: return "update tasks set name = ?1 where id = ?2";
|
|
case MOD_TASK_DESCRIPTION: return "update tasks set desc = ?1 where id = ?2";
|
|
case DEL_TASK: return "delete from tasks where id = ?1";
|
|
case _KLIST_SQL_COUNT: return "";
|
|
}
|
|
return "";
|
|
}
|