From 7e67fa6cc5dfe6ee7046a9fc223207b34a82faa6 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Wed, 22 Oct 2025 17:23:49 +0700 Subject: [PATCH] added insert --- src/db_insert_user.c | 63 ++++++++++++++++++++++++++++++++++++++++++-- users_db.json | 18 ------------- 2 files changed, 61 insertions(+), 20 deletions(-) delete mode 100644 users_db.json diff --git a/src/db_insert_user.c b/src/db_insert_user.c index 6812c95..55d62e5 100644 --- a/src/db_insert_user.c +++ b/src/db_insert_user.c @@ -1,7 +1,12 @@ +#include "cJSON.h" #include "database.h" #include "sql.h" #include "user.h" +#ifndef USE_SQLITE3 +#include "file.h" +#endif + User *db_insert_user(const char *username, const char *email, const char *password, const char *group, const bool *is_superuser) { @@ -62,7 +67,61 @@ User *db_insert_user(const char *username, const char *email, new_user(inserted_id, username, email, password, group, is_superuser); return new_db_user; #else - User *asdf = new_user(0, "asdf", "asdf", "asdf", "asdf", false); - return asdf; + pthread_mutex_lock(&users_file_mutex); + char *data = read_file("users_db.json"); + cJSON *users = cJSON_Parse(data); + char *old_data = cJSON_Print(users); + if (old_data == NULL) { + printf("ERR"); + } + cJSON *user = nullptr; + int users_size = 0; + User *found = nullptr; + cJSON_ArrayForEach(user, users) { + cJSON *user_id = cJSON_GetObjectItem(user, "id"); + cJSON *user_username = cJSON_GetObjectItem(user, "username"); + cJSON *user_password = cJSON_GetObjectItem(user, "password"); + cJSON *user_email = cJSON_GetObjectItem(user, "email"); + cJSON *user_group = cJSON_GetObjectItem(user, "group"); + cJSON *user_is_superuser = cJSON_GetObjectItem(user, "is_superuser"); + if (!strcmp(user_username->valuestring, username)) { + found = new_user(user_id->valueint, user_username->valuestring, + user_password->valuestring, user_email->valuestring, + user_group->valuestring, user_is_superuser->valueint); + } + users_size++; + } + if (found != nullptr) { + return nullptr; + } + cJSON *new_user_data = cJSON_CreateObject(); + cJSON *new_user_id = cJSON_CreateNumber(users_size); + cJSON *new_user_username = cJSON_CreateString(username); + cJSON *new_user_password = cJSON_CreateString(password); + cJSON *new_user_email = cJSON_CreateString(email); + cJSON *new_user_group = cJSON_CreateString(group); + cJSON *new_user_is_superuser = cJSON_CreateBool(*is_superuser); + cJSON_AddItemToObject(new_user_data, "id", new_user_id); + cJSON_AddItemToObject(new_user_data, "username", new_user_username); + cJSON_AddItemToObject(new_user_data, "password", new_user_password); + cJSON_AddItemToObject(new_user_data, "email", new_user_email); + cJSON_AddItemToObject(new_user_data, "group", new_user_group); + cJSON_AddItemToObject(new_user_data, "is_superuser", new_user_is_superuser); + char *new_user_data_string = cJSON_Print(new_user_data); + printf("%s\n", new_user_data_string); + if (users_size == 0) { + users = cJSON_CreateArray(); + } + cJSON_AddItemToArray(users, new_user_data); + char *new_data = cJSON_Print(users); + if (new_data == NULL) { + printf("ERR"); + } + // printf("%s\n", strdup(new_data)); + // write_file("users_db.json", new_data); + free(new_data); + pthread_mutex_unlock(&users_file_mutex); + User *return_user = new_user(users_size, username, email, password, group, is_superuser); + return return_user; #endif } diff --git a/users_db.json b/users_db.json deleted file mode 100644 index 58db746..0000000 --- a/users_db.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "id": 0, - "username": "tola", - "email": "mail@example.com", - "password": "e0c7bfa5b8e4ae0cecfc1f14093a71e05c27abd93a3850fc35f008c3baf866b4", - "group": "root", - "is_superuser": true - }, - { - "id": 1, - "username": "lisa", - "email": "lisa@example.com", - "password": "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b", - "group": "users", - "is_superuser": false - } -]