diff options
| author | Martin Stensgård <mastensg@mastensg.net> | 2025-07-06 17:32:37 +0200 |
|---|---|---|
| committer | Martin Stensgård <mastensg@mastensg.net> | 2025-07-06 17:32:37 +0200 |
| commit | 3708b21fb020716cbe7e11e8c23a4358b89022a6 (patch) | |
| tree | f4ad3f2e640c5ec74837700f3d8b81eaaf5edc15 | |
| parent | ffaa64a28f6bbc4d3b5dfa87dfd75e1117673e3b (diff) | |
select_booking: SELECT from event
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Makefile | 5 | ||||
| -rw-r--r-- | select_booking.c | 42 |
3 files changed, 47 insertions, 1 deletions
@@ -4,5 +4,6 @@ /check_ical_out.txt /events.ical /opplysning +/select_booking /sqlite3 core @@ -5,7 +5,7 @@ LIBS = -lraylib -lm -lpthread -lGLESv2 -lEGL \ -lical -licalss -licalvcal \ $$([ `uname -m` = aarch64 ] && echo '-lvcos -lvchiq_arm -lgbm -ldrm') -all: check_ical import_booking opplysning +all: check_ical import_booking opplysning select_booking check: all ./check_ical < check_ical_in.ical > check_ical_out.txt @@ -29,6 +29,9 @@ import_booking: import_booking.c sqlite.o opplysning: opplysning.c $(CC) $(CFLAGS) -o $@ opplysning.c $(LIBS) +select_booking: select_booking.c sqlite.o + $(CC) $(CFLAGS) -o $@ select_booking.c sqlite.o + sqlite.o: sqlite/sqlite3.c $(CC) $(CFLAGS) -c -o $@ sqlite/sqlite3.c diff --git a/select_booking.c b/select_booking.c new file mode 100644 index 0000000..4eaadcb --- /dev/null +++ b/select_booking.c @@ -0,0 +1,42 @@ +#include <assert.h> +#include <err.h> +#include <stdio.h> + +#include "sqlite/sqlite3.h" + +static const char *DATABASE = "booking.db"; + +int +main(void) +{ + sqlite3 *db; + if (sqlite3_open(DATABASE, &db)) + errx(1, "sqlite3_open: %s", sqlite3_errmsg(db)); + + const char *sql = "SELECT " + "datetime(start, 'unixepoch'), " + "datetime(end, 'unixepoch'), " + "(end-start)/60/60, " + "summary " + "FROM event " + "WHERE unixepoch()-6*3600 < start " + "AND summary IS NOT NULL " + "ORDER BY start"; + sqlite3_stmt *stmt = NULL; + if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL)) + errx(1, "sqlite3_prepare_v2: %s", sqlite3_errmsg(db)); + + for (;;) { + int step = sqlite3_step(stmt); + if (SQLITE_DONE == step) + break; + if (SQLITE_ROW != step) + errx(1, "sqlite3_step: %s", sqlite3_errmsg(db)); + + const unsigned char *summary = sqlite3_column_text(stmt, 3); + assert(summary); + printf("%s\n", summary); + } + + sqlite3_close(db); +} |
