summaryrefslogtreecommitdiff
path: root/src/db.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/db.h')
-rw-r--r--src/db.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/db.h b/src/db.h
new file mode 100644
index 0000000..7f01cbf
--- /dev/null
+++ b/src/db.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+struct db_query {
+ void *handle;
+};
+
+struct db {
+ void *handle;
+ struct db_query single;
+};
+
+struct db_query_arg {
+ union {
+ int32_t i32;
+ double f64;
+ struct { const void *data; int sz; } blob; // used for text as well
+ } u;
+ enum {
+ DB_ARG_NULL,
+ DB_ARG_I32,
+ DB_ARG_F64,
+ DB_ARG_BLOB,
+ DB_ARG_UTF8,
+ } type;
+};
+
+void
+db_init(struct db *db, const char *target);
+
+struct db_query
+db_query_begin(struct db *db, const char *sql, const struct db_query_arg args[], const int num_args);
+
+int
+db_query_fetch(struct db_query *query, struct db_query_arg columns[], const int num_columns);
+
+void
+db_query_end(struct db_query *query);
+
+int
+db_query_single(struct db *db, const char *sql, const struct db_query_arg args[], const int num_args, struct db_query_arg columns[], const int num_columns);
+
+void
+db_gc(struct db *db);
+
+void
+db_release(struct db *db);