diff --git a/src/main/include/models.h b/src/main/include/models.h index 866488f..359bc36 100644 --- a/src/main/include/models.h +++ b/src/main/include/models.h @@ -2,21 +2,27 @@ #include +#include "util.h" + struct klist_user { - u_int id; + ssize_t id; char *name; - u_int local_id; - u_int discord_id; - u_int google_id; + ssize_t local_id; + ssize_t discord_id; + ssize_t google_id; }; typedef struct klist_user klist_user; klist_user *klist_user_init(); +klist_user *klist_user_get_by_id(klist *, u_int); +klist_user *klist_user_get_by_local(klist *, char *); +klist_user *klist_user_get_by_discord(klist *, char *); +klist_user *klist_user_get_by_google(klist *, char *); void klist_user_deinit(klist_user *); struct klist_stage { - u_int id; + ssize_t id; char *name; char *desc; }; @@ -27,7 +33,7 @@ void klist_stage_deinit(klist_stage *); struct klist_list { - u_int id; + ssize_t id; char *name; char *desc; @@ -39,7 +45,7 @@ void klist_list_deinit(klist_list *); struct klist_task { - u_int id; + ssize_t id; char *name; char *desc; diff --git a/src/main/include/util.h b/src/main/include/util.h index 735b277..38996e8 100644 --- a/src/main/include/util.h +++ b/src/main/include/util.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include /* @@ -48,10 +49,12 @@ struct klist_list_context { enum klist_user_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); @@ -86,6 +89,6 @@ void klist_sql_prepare(klist *, char *); * assuring things */ -void klist_assure_user(klist *, __uid_t, char *); +bool klist_assure_user(klist *, __uid_t, char *); void klist_assure_list(klist *, char *); void klist_assure_task(klist *, char *); \ No newline at end of file diff --git a/src/main/main.c b/src/main/main.c index 36b7679..ca9118c 100644 --- a/src/main/main.c +++ b/src/main/main.c @@ -22,6 +22,7 @@ int main(int argc, char **argv) { case USER: switch (((klist_list_context *)ctx->cmd_ctx)->cmd) { case USER_GET: + case USER_DELETE: default: ; } diff --git a/src/main/models.c b/src/main/models.c index e69de29..0bae1f7 100644 --- a/src/main/models.c +++ b/src/main/models.c @@ -0,0 +1,18 @@ +#include "models.h" + +#include + +klist_user *klist_user_init() { + klist_user *user = malloc(sizeof(klist_user)); + user->id = -1; + user->name = NULL; + user->local_id = -1; + user->discord_id = -1; + user->google_id = -1; + return user; +} +klist_user *klist_user_get_by_id(klist *ctx, u_int id); +void klist_user_deinit(klist_user *user) { + free(user->name); + free(user); +} diff --git a/src/main/util.c b/src/main/util.c index 2ee7956..e11d695 100644 --- a/src/main/util.c +++ b/src/main/util.c @@ -27,16 +27,40 @@ void klist_deinit(klist *ctx) { klist_user_context *klist_user_context_init(klist *list) { klist_user_context *ctx = malloc(sizeof(klist_user_context)); - + ctx->cmd = -1; return ctx; } -void klist_user_context_deinit(klist_user_context *ctx); +void klist_user_context_deinit(klist_user_context *ctx) { + free(ctx); +} -klist_list_context *klist_list_context_init(klist *list); -void klist_list_context_deinit(klist_list_context *ctx); +klist_list_context *klist_list_context_init(klist *list) { + klist_list_context *ctx = malloc(sizeof(klist_list_context)); + ctx->cmd = -1; + ctx->name = NULL; + ctx->stages = NULL; + ctx->stages_len = 0; + return ctx; +} +void klist_list_context_deinit(klist_list_context *ctx) { + int i = 0; + for (; i < ctx->stages_len; i++) free(ctx->stages[i]); + free(ctx->stages); + free(ctx); +} -klist_task_context *klist_task_context_init(klist *list); -void klist_task_context_deinit(klist_task_context *ctx); +klist_task_context *klist_task_context_init(klist *list) { + klist_task_context *ctx = malloc(sizeof(klist_task_context)); + ctx->cmd = -1; + ctx->name = NULL; + ctx->stage = NULL; + return ctx; +} +void klist_task_context_deinit(klist_task_context *ctx) { + free(ctx->name); + free(ctx->stage); + free(ctx); +} /* * sql preparations @@ -47,8 +71,16 @@ void klist_sql_prepare(klist *ctx, char *db) { sqlite3_open(db ? db : ":memory:", &ctx->db); int i = 0; - for (i; i < _KLIST_SQL_COUNT; i++) + for (; i < _KLIST_SQL_COUNT; i++) if (sqlite3_prepare(ctx->db, klist_sql_get(i), 0, &ctx->stmts[i], NULL) != SQLITE_OK) fprintf(stderr, "sqlite3_prepare: %s\n", sqlite3_errmsg(ctx->db)); -} \ No newline at end of file +} + +/* + * assuring things + */ + +bool klist_assure_user(klist *, __uid_t, char *); +void klist_assure_list(klist *, char *); +void klist_assure_task(klist *, char *); \ No newline at end of file