#pragma once #include #include "util.h" struct klist_user { ssize_t id; unsigned char *name; ssize_t local_id; }; typedef struct klist_user klist_user; klist_user *klist_user_init(); klist_user *klist_user_init_from_sql(sqlite3_stmt *); klist_user *klist_user_get_by_id(const klist *, u_int); klist_user *klist_user_get_by_local(const klist *, u_int); klist_user *klist_user_get_by_discord(const klist *, u_int); klist_user *klist_user_get_by_google(const klist *, u_int); void klist_user_save(const klist *, klist_user *); void klist_user_delete(const klist *, const klist_user *); void klist_user_deinit(klist_user *); struct klist_list { ssize_t id; unsigned char *name; unsigned char *desc; bool is_preset; }; typedef struct klist_list klist_list; klist_list *klist_list_init(); klist_list *klist_list_init_from_sql(sqlite3_stmt *); klist_list *klist_list_get_by_id(const klist *, u_int); klist_list **klist_list_get_all_by_user(const klist *, u_int, size_t *); klist_list *klist_list_get_by_user_and_name(const klist *, u_int, const char *); void klist_list_save(const klist *, klist_list *, const klist_user *); void klist_list_delete(const klist *, klist_list *); void klist_list_deinit(klist_list *); struct klist_stage { ssize_t id; unsigned char *name; unsigned char *desc; ssize_t list_id; }; typedef struct klist_stage klist_stage; klist_stage *klist_stage_init(); klist_stage *klist_stage_init_from_sql(sqlite3_stmt *); klist_stage *klist_stage_get_by_id(const klist *, u_int); klist_stage **klist_stage_get_all_for_list(const klist *, u_int, size_t *); void klist_stage_save(const klist *, klist_stage *); void klist_stage_delete(const klist *, const klist_stage *); void klist_stage_deinit(klist_stage *); struct klist_task { ssize_t id; unsigned char *name; unsigned char *desc; int stage_id; time_t due; int target_stage; }; typedef struct klist_task klist_task; klist_task *klist_task_init(); klist_task *klist_task_init_from_sql(sqlite3_stmt *); klist_task *klist_task_get_by_id(const klist *, u_int); klist_task **klist_task_get_for_list(const klist *, u_int, size_t *); klist_task *klist_task_get_for_list_by_name(const klist *, u_int, const char *); void klist_task_save(const klist *, klist_task *); void klist_task_delete(const klist *, const klist_task *); void klist_task_deinit(klist_task *); void klist_print_user(klist *, const klist_user *); void klist_print_list(klist *, klist_list *, klist_task **, size_t); void klist_print_task(klist *, klist_task **, size_t);