diff options
author | June McEnroe <june@causal.agency> | 2020-07-11 18:07:33 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-07-11 18:07:33 -0400 |
commit | 5d857422687068526d6477073ef83630ffcf0c1e (patch) | |
tree | 0ccc0a277ca4166bdd0d007bf7bee1f6a4393bab /search.c | |
parent | Handle KCGI_EXIT and call khttp_fcgi_free (diff) | |
download | scooper-5d857422687068526d6477073ef83630ffcf0c1e.tar.gz scooper-5d857422687068526d6477073ef83630ffcf0c1e.zip |
Clean up page handlers
Diffstat (limited to 'search.c')
-rw-r--r-- | search.c | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/search.c b/search.c index 6fba589..3026a3b 100644 --- a/search.c +++ b/search.c @@ -39,10 +39,9 @@ const char *SearchQuery = SQL( JOIN search ON search.rowid = events.event WHERE coalesce(contexts.network = :network, true) AND coalesce(contexts.name = :context, true) - AND coalesce(contexts.query = :query, true) - AND search MATCH :search - LIMIT :limit - OFFSET :offset; + AND contexts.query <= NOT :public + AND search MATCH :query + LIMIT :limit, :offset; ); enum kcgi_err pageSearch(struct kreq *req) { @@ -65,35 +64,32 @@ enum kcgi_err pageSearch(struct kreq *req) { || khtml_elem(&html, KELEM_TABLE); if (error) return error; - dbBindText(stmt.search, ":highlight", "\26"); + sqlite3_reset(stmt.search); dbBindText(stmt.search, ":network", scope.network); dbBindText(stmt.search, ":context", scope.context); - if (pagePublic) dbBindInt(stmt.search, ":query", false); dbBindText(stmt.search, ":search", scope.query); + dbBindInt(stmt.search, ":public", pagePublic); dbBindInt(stmt.search, ":limit", pageLimit); dbBindInt(stmt.search, ":offset", offset); + dbBindText(stmt.search, ":highlight", "\26"); int result; while (SQLITE_ROW == (result = sqlite3_step(stmt.search))) { - struct Event event = { - .event = sqlite3_column_int64(stmt.search, 0), - .time = sqlite3_column_int64(stmt.search, 1), - .network = (const char *)sqlite3_column_text(stmt.search, 2), - .context = (const char *)sqlite3_column_text(stmt.search, 3), - .type = sqlite3_column_int(stmt.search, 4), - .nick = (const char *)sqlite3_column_text(stmt.search, 5), - .user = (const char *)sqlite3_column_text(stmt.search, 6), - .host = (const char *)sqlite3_column_text(stmt.search, 7), - .target = (const char *)sqlite3_column_text(stmt.search, 8), - .message = (const char *)sqlite3_column_text(stmt.search, 9), - }; + int i = 0; + struct Event event = {0}; + event.event = sqlite3_column_int64(stmt.search, i++); + event.time = sqlite3_column_int64(stmt.search, i++); + event.network = sqlite3_column_text(stmt.search, i++); + event.context = sqlite3_column_text(stmt.search, i++); + event.type = sqlite3_column_int(stmt.search, i++); + event.nick = sqlite3_column_text(stmt.search, i++); + event.user = sqlite3_column_text(stmt.search, i++); + event.host = sqlite3_column_text(stmt.search, i++); + event.target = sqlite3_column_text(stmt.search, i++); + event.message = sqlite3_column_text(stmt.search, i++); error = htmlEvent(&html, scope, event); if (error) break; } if (result != SQLITE_DONE) errx(EX_SOFTWARE, "%s", sqlite3_errmsg(db)); - sqlite3_reset(stmt.search); - - return error - || htmlFooter(&html) - || khtml_close(&html); + return error || htmlFooter(&html) || khtml_close(&html); } |