ssb: More different feed culling logic.

This commit is contained in:
Cory McWilliams 2025-04-09 20:45:23 -04:00
parent f72395756a
commit 6f96d4ce65

View File

@ -1594,27 +1594,21 @@ static void _tf_ssb_rpc_delete_feeds_work(tf_ssb_t* ssb, void* user_data)
db = tf_ssb_acquire_db_writer(ssb); db = tf_ssb_acquire_db_writer(ssb);
sqlite3_stmt* statement; sqlite3_stmt* statement;
if (sqlite3_prepare(db, if (sqlite3_prepare(db,
"DELETE FROM messages WHERE author IN (" "DELETE FROM messages WHERE id IN ("
" SELECT author FROM messages WHERE author NOT IN (SELECT value FROM json_each(?)) GROUP BY author LIMIT 1" " SELECT id FROM messages WHERE author NOT IN (SELECT value FROM json_each(?)) ORDER BY rowid DESC LIMIT 1024"
") RETURNING author", ")",
-1, &statement, NULL) == SQLITE_OK) -1, &statement, NULL) == SQLITE_OK)
{ {
int status = SQLITE_OK; int status = SQLITE_OK;
bool printed = false;
if (sqlite3_bind_text(statement, 1, arg, -1, NULL) == SQLITE_OK) if (sqlite3_bind_text(statement, 1, arg, -1, NULL) == SQLITE_OK)
{ {
while ((status = sqlite3_step(statement)) == SQLITE_ROW) if (status != SQLITE_OK)
{ {
if (!printed) tf_printf("deleting messages: %s\n", sqlite3_errmsg(db));
{
tf_printf("deleting %s\n", sqlite3_column_text(statement, 0));
printed = true;
delete->deleted++;
}
} }
if (status != SQLITE_DONE) else
{ {
tf_printf("deleting feeds: %s\n", sqlite3_errmsg(db)); delete->deleted += sqlite3_changes(db);
} }
} }
sqlite3_finalize(statement); sqlite3_finalize(statement);
@ -1627,7 +1621,7 @@ static void _tf_ssb_rpc_delete_feeds_work(tf_ssb_t* ssb, void* user_data)
JS_FreeRuntime(runtime); JS_FreeRuntime(runtime);
delete->duration_ms = (uv_hrtime() - start_ns) / 1000000LL; delete->duration_ms = (uv_hrtime() - start_ns) / 1000000LL;
tf_printf("Deleted %d feeds in %d ms.\n", delete->deleted, (int)delete->duration_ms); tf_printf("Deleted %d message in %d ms.\n", delete->deleted, (int)delete->duration_ms);
_tf_ssb_rpc_checkpoint(ssb); _tf_ssb_rpc_checkpoint(ssb);
} }