From 5f5c0ec887a4cd7640261250d638300a3ea90d02 Mon Sep 17 00:00:00 2001 From: bpc2003 Date: Fri, 23 May 2025 22:19:18 -0400 Subject: Get started on public API --- src/include/init.c | 25 ------------------------- src/include/xdbms.c | 31 +++++++++++++++++++++++++++++++ src/include/xdbms.h | 10 +++++----- src/main.c | 6 +++++- 4 files changed, 41 insertions(+), 31 deletions(-) delete mode 100644 src/include/init.c create mode 100644 src/include/xdbms.c (limited to 'src') diff --git a/src/include/init.c b/src/include/init.c deleted file mode 100644 index 76f46a1..0000000 --- a/src/include/init.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -#include "xdbms.h" -#include "engine/engine.h" - -static tablist_t *db; - -int xdb_init(char *filename) -{ - if (filename == NULL) - fprintf(stderr, "Warning: running in-memory database\n"); - db = readdb(filename); - - tablist_t *tmp = getkeys(db, -1, NULL, 0); - for (int i = 0; i < tmp[0].len; ++i) { - printf("id: %d\n", i); - for (int j = 0; tmp[0].tab[j].flag; ++j) - printf("%s\n", tmp[0].tab[j].key); - } - free(tmp); - delkeys(db, -1, NULL, 0); - free(db); - return 0; -} diff --git a/src/include/xdbms.c b/src/include/xdbms.c new file mode 100644 index 0000000..eb6193e --- /dev/null +++ b/src/include/xdbms.c @@ -0,0 +1,31 @@ +#include +#include + +#include "engine/engine.h" +#include "xml/xml.h" +#include "xdbms.h" + +static tablist_t *db; + +int xdb_init(char *filename) { + if (filename == NULL) + fprintf(stderr, "Warning: running in-memory database\n"); + db = readdb(filename); + if (db == NULL) { + fprintf(stderr, "Error: Invalid DB file\n"); + return 1; + } + return 0; +} + +void xdb_close(void) { + delkeys(db, -1, NULL, 0); + free(db); +} + +char *xdb_stmt(char *stmt) { + map_t *decoded = decode(stmt); + printf("%s\n", encode(decoded)); + freemap(decoded); + return NULL; +} diff --git a/src/include/xdbms.h b/src/include/xdbms.h index a18996d..af7d1dc 100644 --- a/src/include/xdbms.h +++ b/src/include/xdbms.h @@ -1,13 +1,13 @@ #ifndef XDBMS_H #define XDBMS_H -// init: intialize an XDBMS DB +// xdb_init: intialize an XDBMS DB int xdb_init(char *filename); -// exec: execute a statement on an XDBMS DB -char *exec(char *stmt); +// xdb_stmt: execute a statement on an XDBMS DB +char *xdb_stmt(char *stmt); -// close: close an XDBMS DB -int close(); +// xdb_close: close an XDBMS DB +void xdb_close(void); #endif diff --git a/src/main.c b/src/main.c index 7d06d65..6ce4a1f 100644 --- a/src/main.c +++ b/src/main.c @@ -6,6 +6,10 @@ int main(int argc, char **argv) { if (argc == 1) exit(1); char *filename = argv[1]; - xdb_init(filename); + if (xdb_init(filename)) + exit(1); + // TODO: make decoder be able to decode empty tags + xdb_stmt("true"); + xdb_close(); exit(0); } -- cgit v1.2.3