diff options
author | June McEnroe <june@causal.agency> | 2019-12-24 00:58:26 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-12-24 00:58:26 -0500 |
commit | 2d7108f29b9f7d80709dfbe0c2e2434b07c5a45c (patch) | |
tree | 4e00cf884cd6b0291694f830140d79b240d19c28 /unscoop.c | |
parent | Actually only use a transaction for handlers that need it (diff) | |
download | litterbox-2d7108f29b9f7d80709dfbe0c2e2434b07c5a45c.tar.gz litterbox-2d7108f29b9f7d80709dfbe0c2e2434b07c5a45c.zip |
It's The Big Refactor
Diffstat (limited to 'unscoop.c')
-rw-r--r-- | unscoop.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/unscoop.c b/unscoop.c index 0b15430..085c134 100644 --- a/unscoop.c +++ b/unscoop.c @@ -221,12 +221,12 @@ static sqlite3_stmt *insertEvent; static int paramNetwork; static int paramContext; -static void prepareInsert(sqlite3 *db) { +static void prepareInsert(void) { const char *InsertName = SQL( INSERT OR IGNORE INTO names (nick, user, host) VALUES (:nick, coalesce(:user, '*'), coalesce(:host, '*')); ); - insertName = dbPrepare(db, true, InsertName); + dbPersist(&insertName, InsertName); const char *InsertEvent = SQL( INSERT INTO events (time, type, context, name, target, message) @@ -244,7 +244,7 @@ static void prepareInsert(sqlite3 *db) { AND names.user = coalesce(:user, '*') AND names.host = coalesce(:host, '*'); ); - insertEvent = dbPrepare(db, true, InsertEvent); + dbPersist(&insertEvent, InsertEvent); paramNetwork = dbParam(insertEvent, ":network"); paramContext = dbParam(insertEvent, ":context"); } @@ -293,7 +293,7 @@ static void dedupEvents(sqlite3 *db) { ), duplicates AS (SELECT event FROM potentials WHERE diff > 50) DELETE FROM events WHERE event IN duplicates; ); - dbExec(db, Delete); + dbExec(Delete); printf("deleted %d events\n", sqlite3_changes(db)); } @@ -317,9 +317,8 @@ int main(int argc, char *argv[]) { } } - sqlite3 *db = dbFind(path, SQLITE_OPEN_READWRITE); - if (!db) errx(EX_NOINPUT, "database not found"); - if (dbVersion(db) != DatabaseVersion) { + dbFind(path, SQLITE_OPEN_READWRITE); + if (dbVersion() != DatabaseVersion) { errx(EX_CONFIG, "database out of date; migrate with litterbox -m"); } @@ -335,6 +334,7 @@ int main(int argc, char *argv[]) { regex[i] = compile(format->matchers[i].pattern); } + sqlite3_stmt *insertContext = NULL; const char *InsertContext = SQL( INSERT OR IGNORE INTO contexts (network, name, query) VALUES ( @@ -342,11 +342,11 @@ int main(int argc, char *argv[]) { NOT (:context LIKE '#%' OR :context LIKE '&%') ); ); - sqlite3_stmt *insertContext = dbPrepare(db, true, InsertContext); + dbPersist(&insertContext, InsertContext); dbBindText(insertContext, ":network", network); dbBindText(insertContext, ":context", context); - prepareInsert(db); + prepareInsert(); dbBindText(insertEvent, ":network", network); dbBindText(insertEvent, ":context", context); @@ -376,7 +376,7 @@ int main(int argc, char *argv[]) { FILE *file = fopen(argv[i], "r"); if (!file) err(EX_NOINPUT, "%s", argv[i]); - dbExec(db, SQL(BEGIN TRANSACTION;)); + dbExec(SQL(BEGIN TRANSACTION;)); regmatch_t pathNetwork = match[i][format->network]; regmatch_t pathContext = match[i][format->context]; @@ -403,12 +403,9 @@ int main(int argc, char *argv[]) { if (ferror(file)) err(EX_IOERR, "%s", argv[i]); fclose(file); - dbExec(db, SQL(COMMIT TRANSACTION;)); + dbExec(SQL(COMMIT TRANSACTION;)); } printf("\n"); - sqlite3_finalize(insertContext); - sqlite3_finalize(insertName); - sqlite3_finalize(insertEvent); - sqlite3_close(db); + dbClose(); } |