From 9483c8f1dbde014432c7a99416fcda3a6ccb3563 Mon Sep 17 00:00:00 2001 From: Anna Figueiredo Gomes Date: Mon, 20 Feb 2023 17:12:32 -0300 Subject: initial Signed-off-by: Anna Figueiredo Gomes --- src/db.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/db.c (limited to 'src/db.c') diff --git a/src/db.c b/src/db.c new file mode 100644 index 0000000..7211b8c --- /dev/null +++ b/src/db.c @@ -0,0 +1,79 @@ +#include +#include "db.h" +#include "util.h" + +const char * +get_db_path() +{ + return check_get_env("NEWSRAFT_DB_PATH"); +} + +bool +db_init() +{ + int result = sqlite3_open(get_db_path(), &db); + if (result != SQLITE_OK) { + fprintf(stderr, "Can't open database: %s", sqlite3_errmsg(db)); + sqlite3_close(db); + return false; + } + return true; +} + +void +db_clean() +{ + sqlite3_close(db); +} + +struct feed * +get_db_feeds() +{ + char *query; + size_t total_feeds = get_feed_count(); + if (total_feeds == 0) { + return NULL; + } + struct feed *feeds = calloc(sizeof(struct feed), total_feeds); + + query = "select feed_url,title from feeds;"; + int result = sqlite3_prepare_v2(db, query, -1, &statement, NULL); + + if (result == SQLITE_OK) { + for (size_t i = 0; sqlite3_step(statement) != SQLITE_DONE; i++) { + char *url = (char*)sqlite3_column_text(statement, 0); + char *title = (char*)sqlite3_column_text(statement, 1); + feeds[i] = create_feed(url, title); + } + } + +#ifdef DEBUG + for (size_t i = 0; i < total_feeds; i++) { + printf("%s, %s\n", feeds[i].title, feeds[i].url); + } +#endif + + sqlite3_finalize(statement); + return feeds; +} + +size_t +get_feed_count() +{ + char* query = "select count(*) from feeds;"; + int result = sqlite3_prepare_v2(db, query, -1, &statement, NULL); + int total_feeds = 0; + + if (result == SQLITE_OK) { + while(sqlite3_step(statement) != SQLITE_DONE) { + total_feeds = sqlite3_column_int(statement, 0); + printf("%d\n", total_feeds); + } + } + + sqlite3_finalize(statement); + return total_feeds; +} + +//size_t get_item_count() { +//} -- cgit v1.2.3