@@ -283,12 +283,42 @@
283 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ );
284 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
;
285 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
286 286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
287 287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Make sure the repository data tables used by chat exist. Create them
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** if they do not.
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Create or rebuild the /chat search index. Requires that the
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** repository.chat table exists. If bForce is true, it will drop the
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** chatfts1 table and recreate/reindex it. If bForce is 0, it will
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** only index the chat content if the chatfts1 table does not already
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** exist.
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void chat_rebuild_index(int bForce){
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bForce!=0 ){
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("DROP TABLE IF EXISTS chatfts1");
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( bForce!=0 || !db_table_exists("repository", "chatfts1") ){
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const int tokType = search_tokenizer_type(0);
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zTokenizer = search_tokenize_arg_for_type(
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ tokType==FTS5TOK_NONE ? FTS5TOK_PORTER : tokType
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Special case: if fts search is disabled for the main repo
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** content, use a default tokenizer here. */
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ assert( zTokenizer && zTokenizer[0] );
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "CREATE VIRTUAL TABLE repository.chatfts1 USING fts5("
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " xmsg, content=chat, content_rowid=msgid%s"
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ");"
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "INSERT INTO repository.chatfts1(chatfts1) VALUES('rebuild');",
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ zTokenizer/*safe-for-%s*/
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Make sure the repository data tables used by chat exist. Create
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** them if they do not. Set up TEMP triggers (if needed) to update the
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** chatfts1 table as the chat table is updated.
290 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
291 321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static void chat_create_tables(void){
292 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db_table_exists("repository","chat") ){
293 323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec(zChatSchema1/*works-like:""*/);
294 324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( !db_table_has_column("repository","chat","lmtime") ){
@@ -295,26 +325,16 @@
295 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( !db_table_has_column("repository","chat","mdel") ){
296 326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ALTER TABLE chat ADD COLUMN mdel INT");
297 327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
298 328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("ALTER TABLE chat ADD COLUMN lmtime TEXT");
299 329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( !db_table_exists("repository", "chatfts1") ){
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec(
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "CREATE VIRTUAL TABLE repository.chatfts1 USING fts5("
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " xmsg, content=chat, content_rowid=msgid, tokenize=porter"
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ");"
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "INSERT INTO repository.chatfts1(chatfts1) VALUES('rebuild');"
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- );
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- db_multi_exec(
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "DROP TRIGGER IF EXISTS chat_ai;"
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "DROP TRIGGER IF EXISTS chat_ad;"
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "CREATE TEMP TRIGGER chat_ai AFTER INSERT ON chat BEGIN "
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chat_rebuild_index(0);
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "CREATE TEMP TRIGGER IF NOT EXISTS chat_ai AFTER INSERT ON chat BEGIN "
313 333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" INSERT INTO chatfts1(rowid, xmsg) VALUES(new.msgid, new.xmsg);"
314 334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"END;"
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "CREATE TEMP TRIGGER chat_ad AFTER DELETE ON chat BEGIN "
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "CREATE TEMP TRIGGER IF NOT EXISTS chat_ad AFTER DELETE ON chat BEGIN "
316 336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" INSERT INTO chatfts1(chatfts1, rowid, xmsg) "
317 337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" VALUES('delete', old.msgid, old.xmsg);"
318 338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"END;"
319 339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
320 340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
321 341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!