diff options
| author | Martin Stensgård <mastensg@mastensg.net> | 2025-07-09 20:34:44 +0200 |
|---|---|---|
| committer | Martin Stensgård <mastensg@mastensg.net> | 2025-07-09 20:34:44 +0200 |
| commit | cc80525980d004f32aa3342012060b4d421c18f2 (patch) | |
| tree | 5e6e70f26848397aa3542333be6360e809c598ae /select.c | |
| parent | a8571be97dd6630387c22c53209fa56bc87065b4 (diff) | |
generic select_booking -> select
Diffstat (limited to 'select.c')
| -rw-r--r-- | select.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/select.c b/select.c new file mode 100644 index 0000000..ff6af50 --- /dev/null +++ b/select.c @@ -0,0 +1,55 @@ +#include <assert.h> +#include <err.h> +#include <stdio.h> + +#include "sqlite/sqlite3.h" + +int +main(int argc, const char *argv[static argc]) +{ + if (2 != argc) + errx(1, "usage: %s dbfile", argv[0]); + + sqlite3 *db; + if (sqlite3_open(argv[1], &db)) + errx(1, "sqlite3_open: %s", sqlite3_errmsg(db)); + + const char *sql = "SELECT " + "CAST(strftime('%Y', start, 'localtime') as INT), " + "CAST(strftime('%m', start, 'localtime') as INT), " + "CAST(strftime('%d', start, 'localtime') as INT), " + "(start), " + "unixepoch(end), " + "timediff(end, start), " + "summary " + "FROM event " + "WHERE datetime('now', 'start of day') < 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)); + + int sy = sqlite3_column_int(stmt, 0); + int sm = sqlite3_column_int(stmt, 1); + int sd = sqlite3_column_int(stmt, 2); + const unsigned char *start = sqlite3_column_text(stmt, 3); + const unsigned char *end = sqlite3_column_text(stmt, 4); + const unsigned char *td = sqlite3_column_text(stmt, 5); + const unsigned char *summary = sqlite3_column_text(stmt, 6); + assert(start); + assert(end); + assert(td); + assert(summary); + printf("%04d %02d %02d %s %s\n", sy, sm, sd, start, summary); + } + + sqlite3_close(db); +} |
