From 78bf2fe4a5bf37514f6dfd203ef969da0bf40c2e Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Mon, 22 Sep 2025 17:32:44 +0200 Subject: Setup project skeleton --- db_topic.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 db_topic.c (limited to 'db_topic.c') diff --git a/db_topic.c b/db_topic.c new file mode 100644 index 0000000..c07d5ee --- /dev/null +++ b/db_topic.c @@ -0,0 +1,57 @@ +#define _POSIX_C_SOURCE 200809L + +#include "db.h" +#include +#include +#include +#include + +void db_topic_free(struct db_topic *const t) +{ + if (!t) + return; + + free(t->title); +} + +int db_topic(sqlite3 *const db, sqlite3_stmt *const stmt, struct db_topic *const t) +{ + char *title = NULL; + unsigned long long id, secid; + long long creat; + + if (db_biguint(db, stmt, "id", &id)) + { + fprintf(stderr, "%s: failed to get id\n", __func__); + goto failure; + } + else if (db_biguint(db, stmt, "secid", &secid)) + { + fprintf(stderr, "%s: failed to get section id\n", __func__); + goto failure; + } + else if (db_bigint(db, stmt, "creat", &creat)) + { + fprintf(stderr, "%s: failed to get creation time\n", __func__); + goto failure; + } + else if (!(title = db_str(db, stmt, "title"))) + { + fprintf(stderr, "%s: failed to get name\n", __func__); + goto failure; + } + + *t = (const struct db_topic) + { + .secid = secid, + .title = title, + .creat = creat, + .id = id + }; + + return 0; + +failure: + free(title); + return -1; +} -- cgit v1.2.3