diff options
Diffstat (limited to 'src/db.h')
-rw-r--r-- | src/db.h | 49 |
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); |