summaryrefslogtreecommitdiff
path: root/src/db.c
diff options
context:
space:
mode:
authorAnna Figueiredo Gomes <navi@vlhl.dev>2023-02-20 17:12:32 -0300
committerAnna Figueiredo Gomes <navi@vlhl.dev>2023-02-20 17:12:32 -0300
commit9483c8f1dbde014432c7a99416fcda3a6ccb3563 (patch)
tree973edfb0181bc03eb4643d66732c10573a1924bb /src/db.c
initialHEADmain
Signed-off-by: Anna Figueiredo Gomes <navi@vlhl.dev>
Diffstat (limited to 'src/db.c')
-rw-r--r--src/db.c79
1 files changed, 79 insertions, 0 deletions
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 <string.h>
+#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() {
+//}