begin list command implementation
This commit is contained in:
parent
be20e4fab1
commit
de12720d2a
4 changed files with 37 additions and 16 deletions
|
@ -35,6 +35,8 @@ 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(klist *, u_int);
|
||||
void klist_stage_save(klist *, klist_stage *);
|
||||
void klist_stage_delete(klist *, klist_stage *);
|
||||
void klist_stage_deinit(klist_stage *);
|
||||
|
||||
|
||||
|
@ -49,6 +51,8 @@ klist_list *klist_list_init();
|
|||
klist_list *klist_list_init_from_sql(sqlite3_stmt *);
|
||||
klist_list *klist_list_get_by_id(klist *, u_int);
|
||||
klist_list **klist_list_get_all_by_user(klist *, u_int, size_t *);
|
||||
void klist_list_save(klist *, klist_list *);
|
||||
void klist_list_delete(klist *, klist_list *);
|
||||
void klist_list_deinit(klist_list *);
|
||||
|
||||
|
||||
|
@ -62,4 +66,6 @@ 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(klist *, u_int);
|
||||
void klist_task_save(klist *, klist_task *);
|
||||
void klist_task_delete(klist *, klist_task *);
|
||||
void klist_task_deinit(klist_task *);
|
|
@ -49,6 +49,7 @@ enum klist_list_command {
|
|||
struct klist_list_context {
|
||||
enum klist_list_command cmd;
|
||||
char *name;
|
||||
char *desc;
|
||||
char **stages;
|
||||
size_t stages_len;
|
||||
};
|
||||
|
|
|
@ -19,12 +19,11 @@ int main(int argc, char **argv) {
|
|||
|
||||
if (!ctx->error) {
|
||||
setup(ctx, argc, argv);
|
||||
klist_user *user;
|
||||
klist_user *user = klist_user_get_by_local(ctx, getuid());
|
||||
switch (ctx->cmd) {
|
||||
case USER:
|
||||
switch (((klist_user_context *)ctx->cmd_ctx)->cmd) {
|
||||
case USER_GET:
|
||||
user = klist_user_get_by_local(ctx, getuid());
|
||||
if (user) {
|
||||
fprintf(
|
||||
stderr,
|
||||
|
@ -34,7 +33,6 @@ int main(int argc, char **argv) {
|
|||
size_t lists_len, i = 0;
|
||||
klist_list **lists = klist_list_get_all_by_user(ctx, user->id, &lists_len);
|
||||
fprintf(stderr, "Lists: %lu\n", lists_len);
|
||||
klist_user_deinit(user);
|
||||
for (; i < lists_len; i++) klist_list_deinit(lists[i]);
|
||||
} else fprintf(stderr, "No user for '%s' found.\n", getlogin());
|
||||
break;
|
||||
|
@ -47,30 +45,49 @@ int main(int argc, char **argv) {
|
|||
);
|
||||
break;
|
||||
case USER_DELETE:
|
||||
user = klist_user_get_by_local(ctx, getuid());
|
||||
if (user) {
|
||||
klist_user_delete(ctx, user);
|
||||
klist_user_deinit(user);
|
||||
}
|
||||
fprintf(stderr, "User deleted.\n");
|
||||
} else fprintf(stderr, "User not found, no changes done.\n");
|
||||
break;
|
||||
}
|
||||
case LIST:
|
||||
switch (((klist_list_context *)ctx->cmd_ctx)->cmd) {
|
||||
klist_list_context *list_ctx = ctx->cmd_ctx;
|
||||
switch (list_ctx->cmd) {
|
||||
case LIST_ADD:
|
||||
|
||||
if (!list_ctx->name) { fprintf(stderr, "Missing name.\n"); break; }
|
||||
if (!list_ctx->stages_len) { fprintf(stderr, "Missing stages.\n"); break; }
|
||||
klist_list *list = klist_list_init();
|
||||
list->name = (unsigned char*)list_ctx->name;
|
||||
list->desc = (unsigned char*)list_ctx->desc;
|
||||
klist_list_save(ctx, list);
|
||||
int i = 0;
|
||||
for (; i < list_ctx->stages_len; i++) {
|
||||
klist_stage *stage = klist_stage_init();
|
||||
stage->name = (unsigned char*)list_ctx->stages[i];
|
||||
stage->list_id = list->id;
|
||||
klist_stage_save(ctx, stage);
|
||||
klist_stage_deinit(stage);
|
||||
}
|
||||
klist_list_deinit(list);
|
||||
break;
|
||||
case LIST_EDIT:
|
||||
case LIST_GET:
|
||||
case LIST_DELETE: ;
|
||||
case LIST_DELETE:
|
||||
fprintf(stderr, "Not implemented\n");
|
||||
}
|
||||
case TASK:
|
||||
switch (((klist_task_context *)ctx->cmd_ctx)->cmd) {
|
||||
case TASK_ADD:
|
||||
case TASK_EDIT:
|
||||
case TASK_GET:
|
||||
case TASK_DELETE: ;
|
||||
case TASK_DELETE:
|
||||
fprintf(stderr, "Not implemented\n");
|
||||
;
|
||||
}
|
||||
default: ;
|
||||
}
|
||||
if (user) klist_user_deinit(user);
|
||||
}
|
||||
|
||||
const int error = ctx->error;
|
||||
|
|
|
@ -45,6 +45,7 @@ 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->desc = NULL;
|
||||
ctx->stages = NULL;
|
||||
ctx->stages_len = 0;
|
||||
return ctx;
|
||||
|
@ -82,12 +83,8 @@ void klist_sql_prepare(klist *ctx, char *db) {
|
|||
for (; i < _KLIST_SQL_COUNT; i++)
|
||||
if (sqlite3_prepare(ctx->db, klist_sql_get(i), -1, &ctx->stmts[i], NULL) != SQLITE_OK)
|
||||
fprintf(stderr, "sqlite3_prepare: %s\n", sqlite3_errmsg(ctx->db));
|
||||
char *err;
|
||||
sqlite3_exec(ctx->db, klist_sql_get(INIT), NULL, NULL, &err);
|
||||
if (err) {
|
||||
fprintf(stderr, "Failed to initialize, expect errors: %s\n", err);
|
||||
sqlite3_free(err);
|
||||
}
|
||||
if (sqlite3_step(ctx->stmts[INIT]) != SQLITE_DONE)
|
||||
fprintf(stderr, "Database initialization failed (%s), expect issues.\n", sqlite3_errmsg(ctx->db));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue