summaryrefslogtreecommitdiff
path: root/select.c
diff options
context:
space:
mode:
Diffstat (limited to 'select.c')
-rw-r--r--select.c55
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);
+}