From 5022cfb9ee309475c2110994dfff86a7f32d614e Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Wed, 25 Dec 2019 18:08:54 -0500 Subject: Treat topics like motds It's more like a cache of existing topics. events is still meant to record actual topic events. --- litterbox.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'litterbox.c') diff --git a/litterbox.c b/litterbox.c index ff110d4..c1938cd 100644 --- a/litterbox.c +++ b/litterbox.c @@ -49,8 +49,8 @@ static void prepare(void) { dbPersist(&insert.context, InsertContext); const char *InsertTopic = SQL( - INSERT INTO topics (context, time, topic) - SELECT context, coalesce(datetime(:time), datetime('now')), :topic + INSERT OR IGNORE INTO topics (time, context, topic) + SELECT coalesce(datetime(:time), datetime('now')), context, :topic FROM contexts WHERE network = :network AND name = :context; ); dbPersist(&insert.topic, InsertTopic); @@ -115,10 +115,10 @@ static void insertContext(const char *context, bool query) { } static void insertTopic( - const char *context, const char *time, const char *topic + const char *time, const char *context, const char *topic ) { - dbBindText(insert.topic, ":context", context); dbBindText(insert.topic, ":time", time); + dbBindText(insert.topic, ":context", context); dbBindText(insert.topic, ":topic", topic); dbRun(insert.topic); } @@ -385,8 +385,8 @@ static void handlePrivmsg(struct Message *msg) { static void handleReplyTopic(struct Message *msg) { require(msg, false, 2); - if (!strcmp(msg->cmd, "331")) msg->params[2] = NULL; - insertTopic(msg->params[1], msg->time, msg->params[2]); + if (!strcmp(msg->cmd, "331")) msg->params[2] = ""; + insertTopic(msg->time, msg->params[1], msg->params[2]); } static void handleReplyNames(struct Message *msg) { @@ -465,6 +465,7 @@ static void handleQuit(struct Message *msg) { static void handleTopic(struct Message *msg) { require(msg, true, 1); insertContext(msg->params[0], false); + insertTopic(msg->params[0], msg->params[1]); insertName(msg->nick, msg->user, msg->host); insertEvent( msg->time, Topic, msg->params[0], -- cgit 1.4.1