summaryrefslogtreecommitdiff
path: root/dbhandling.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbhandling.c')
-rw-r--r--dbhandling.c83
1 files changed, 60 insertions, 23 deletions
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);
}