From 29410e3943e3e0da6279708d19b4459578b49f5d Mon Sep 17 00:00:00 2001 From: yuzu-eva Date: Thu, 17 Apr 2025 21:00:16 +0200 Subject: refactored shit --- dbhandling.c | 83 +++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 23 deletions(-) (limited to 'dbhandling.c') diff --git a/dbhandling.c b/dbhandling.c index 4b1cb93..a112b8e 100644 --- a/dbhandling.c +++ b/dbhandling.c @@ -8,7 +8,7 @@ void exit_with_error(sqlite3 *db, const char *msg) exit(69); } -void select_from_table(sqlite3 *db, args_e target, char *qp) +void select_from_table(sqlite3 *db, args_e target, entry_t *entry) { char *sql; int rc; @@ -16,8 +16,14 @@ void select_from_table(sqlite3 *db, args_e target, char *qp) const unsigned char *name, *author, *value, *status; const char *type; - char *query_param = malloc(strlen(qp) + 2); + printf("Name: "); + fgets(entry->name, sizeof(entry->name), stdin); + + // remove newline char, otherwise it messes with the query + entry->name[strcspn(entry->name, "\n")] = 0; + + char *query_param = malloc(strlen(entry->name)); switch (target) { case ANIME: type = "Episode"; @@ -29,7 +35,7 @@ void select_from_table(sqlite3 *db, args_e target, char *qp) break; case BOOK: type = "Chapter"; - sql = "SELECT * FROM book WHERE name LIKE ?1 ORDER BY id;"; + sql = "SELECT * FROM book WHERE name LIKE ?1 OR author LIKE ?1 ORDER BY id;"; break; default: fprintf(stderr, "table does not exist...\n"); @@ -38,7 +44,8 @@ void select_from_table(sqlite3 *db, args_e target, char *qp) } sqlite3_stmt *stmt; - snprintf(query_param, strlen(qp) + 2, "%s%%", qp); + snprintf(query_param, strlen(entry->name) + 2, "%s%%", entry->name); + printf("Query parameter: %s\n" , query_param); rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); if (rc != SQLITE_OK) { @@ -74,7 +81,7 @@ void select_from_table(sqlite3 *db, args_e target, char *qp) free(query_param); } -void update_entry(sqlite3 *db, args_e target, char *qp, char *value, char *status) +void update_entry(sqlite3 *db, args_e target, entry_t *entry) { char *sql; int rc; @@ -82,25 +89,39 @@ void update_entry(sqlite3 *db, args_e target, char *qp, char *value, char *statu sqlite3_stmt *stmt; + printf("Name: "); + fgets(entry->name, sizeof(entry->name), stdin); switch (target) { case ANIME: - if (status == NULL) { + printf("Episode: "); + fgets(entry->value, sizeof(entry->value), stdin); + if (entry->status == NULL) { sql = "UPDATE anime SET episode=?1 WHERE name=?2;"; } else { + printf("Status: "); + fgets(entry->status, sizeof(entry->status), stdin); sql = "UPDATE anime SET episode=?1, status=?2 WHERE name=?3;"; } break; case MANGA: - if (status == NULL) { + printf("Chapter: "); + fgets(entry->value, sizeof(entry->value), stdin); + if (entry->status == NULL) { sql = "UPDATE manga SET chapter=?1 WHERE name=?2;"; } else { + printf("Status: "); + fgets(entry->status, sizeof(entry->status), stdin); sql = "UPDATE manga SET chapter=?1, status=?2 WHERE name=?3;"; } break; case BOOK: - if (status == NULL) { + printf("Chapter: "); + fgets(entry->value, sizeof(entry->value), stdin); + if (entry->status == NULL) { sql = "UPDATE book SET chapter=?1 WHERE name=?2;"; } else { + printf("Status: "); + fgets(entry->status, sizeof(entry->status), stdin); sql = "UPDATE book SET chapter=?1, status=?2 WHERE name=?3;"; } break; @@ -115,13 +136,13 @@ void update_entry(sqlite3 *db, args_e target, char *qp, char *value, char *statu exit_with_error(db, "failure fetching data: "); } - if (status == NULL) { - sqlite3_bind_text(stmt, 1, value, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 2, qp, -1, SQLITE_STATIC); + if (entry->status == NULL) { + sqlite3_bind_text(stmt, 1, entry->value, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, entry->name, -1, SQLITE_STATIC); } else { - sqlite3_bind_text(stmt, 1, value, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 2, status, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 3, qp, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 1, entry->value, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, entry->status, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, entry->name, -1, SQLITE_STATIC); } rc = sqlite3_step(stmt); @@ -132,21 +153,37 @@ void update_entry(sqlite3 *db, args_e target, char *qp, char *value, char *statu sqlite3_finalize(stmt); } -void add_entry(sqlite3 *db, args_e target, char *name, char *author, char *value, char *status) +void add_entry(sqlite3 *db, args_e target, entry_t *entry) { char *sql; int rc; sqlite3_stmt *stmt; + printf("Name: "); + fgets(entry->name, sizeof(entry->name), stdin); switch (target) { case ANIME: + printf("Episode: "); + fgets(entry->value, sizeof(entry->value), stdin); + printf("Status: "); + fgets(entry->status, sizeof(entry->status), stdin); sql = "INSERT INTO anime (name, episode, status) VALUES (?1, ?2, ?3);"; break; case MANGA: + printf("Chapter: "); + fgets(entry->value, sizeof(entry->value), stdin); + printf("Status: "); + fgets(entry->status, sizeof(entry->status), stdin); sql = "INSERT INTO manga (name, chapter, status) VALUES (?1, ?2, ?3);"; break; case BOOK: + printf("Author: "); + fgets(entry->author, sizeof(entry->author), stdin); + printf("Chapter: "); + fgets(entry->value, sizeof(entry->value), stdin); + printf("Status: "); + fgets(entry->status, sizeof(entry->status), stdin); sql = "INSERT INTO book (name, author, chapter, status) VALUES (?1, ?2, ?3, ?4);"; break; default: @@ -161,17 +198,17 @@ void add_entry(sqlite3 *db, args_e target, char *name, char *author, char *value } if (target == BOOK) { - sqlite3_bind_text(stmt, 1, name, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 2, author, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 3, value, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 4, status, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 1, entry->name, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, entry->author, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, entry->value, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 4, entry->status, -1, SQLITE_STATIC); } else { - sqlite3_bind_text(stmt, 1, name, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 2, value, -1, SQLITE_STATIC); - sqlite3_bind_text(stmt, 3, status, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 1, entry->name, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 2, entry->value, -1, SQLITE_STATIC); + sqlite3_bind_text(stmt, 3, entry->status, -1, SQLITE_STATIC); } rc = sqlite3_step(stmt); - printf("Entry %s added!\n", name); + printf("Entry %s added!\n", entry->name); sqlite3_finalize(stmt); } -- cgit v1.2.3