blist/src/main/include/util.h

94 lines
No EOL
1.7 KiB
C

#pragma once
#include <sqlite3.h>
#include <stdbool.h>
#include <sys/types.h>
/*
* command parsing
*/
enum klist_command {
USER,
LIST,
TASK,
};
struct klist {
sqlite3 *db;
sqlite3_stmt **stmts;
u_int cmd;
void *cmd_ctx;
int error;
};
typedef struct klist klist;
klist *klist_init(char *db);
void klist_deinit(klist *list);
enum klist_user_command {
USER_GET,
USER_DELETE
};
struct klist_user_context {
enum klist_command cmd;
};
typedef struct klist_user_context klist_user_context;
klist_user_context *klist_user_context_init(klist *list);
void klist_user_context_deinit(klist_user_context *ctx);
enum klist_list_command {
LIST_ADD,
LIST_EDIT,
LIST_GET,
LIST_DELETE,
};
struct klist_list_context {
enum klist_list_command cmd;
char *name;
char **stages;
size_t stages_len;
};
typedef struct klist_list_context klist_list_context;
klist_list_context *klist_list_context_init(klist *list);
klist_list_context *klist_list_context_get_by_id(klist_list_context *ctx, u_int id);
void klist_list_context_deinit(klist_list_context *ctx);
enum klist_task_command {
TASK_ADD,
TASK_EDIT,
TASK_GET,
TASK_DELETE,
};
struct klist_task_context {
enum klist_task_command cmd;
char *list;
char *name;
char *stage;
};
typedef struct klist_task_context klist_task_context;
klist_task_context *klist_task_context_init(klist *list);
void klist_task_context_deinit(klist_task_context *ctx);
/*
* sql preparations
*/
void klist_sql_prepare(klist *, char *);
/*
* assuring things
*/
bool klist_assure_user(klist *, __uid_t, char *);
void klist_assure_list(klist *, char *);
void klist_assure_task(klist *, char *);