diff options
author | June McEnroe <june@causal.agency> | 2019-12-25 18:08:54 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-12-25 18:08:54 -0500 |
commit | 5022cfb9ee309475c2110994dfff86a7f32d614e (patch) | |
tree | f9d61205194c8546a5a5ec9c99b2ce01e1cd6e1a /litterbox.c | |
parent | Insert MOTDs into the database (diff) | |
download | litterbox-5022cfb9ee309475c2110994dfff86a7f32d614e.tar.gz litterbox-5022cfb9ee309475c2110994dfff86a7f32d614e.zip |
Treat topics like motds
It's more like a cache of existing topics. events is still meant to record actual topic events.
Diffstat (limited to 'litterbox.c')
-rw-r--r-- | litterbox.c | 13 |
1 files changed, 7 insertions, 6 deletions
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], |