outline model inits/getter

This commit is contained in:
theBreadCompany 2025-06-03 15:42:38 +02:00
parent b5773c0a03
commit bcb08712c6
5 changed files with 76 additions and 16 deletions

View file

@ -2,21 +2,27 @@
#include <sys/types.h>
#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;

View file

@ -1,5 +1,6 @@
#pragma once
#include <sqlite3.h>
#include <stdbool.h>
#include <sys/types.h>
/*
@ -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 *);

View file

@ -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: ;
}

View file

@ -0,0 +1,18 @@
#include "models.h"
#include <stdlib.h>
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);
}

View file

@ -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));
}
/*
* assuring things
*/
bool klist_assure_user(klist *, __uid_t, char *);
void klist_assure_list(klist *, char *);
void klist_assure_task(klist *, char *);