db/events: delete tags during deleteFilters

This commit is contained in:
Alex Gleason 2023-09-05 13:23:45 -05:00
parent df17f62ecb
commit cdffe42cfd
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
1 changed files with 12 additions and 5 deletions

View File

@ -157,12 +157,19 @@ async function getFilters<K extends number>(
/** Delete events based on filters from the database. */
function deleteFilters<K extends number>(filters: DittoFilter<K>[]) {
if (!filters.length) return Promise.resolve([]);
const query = getFiltersQuery(filters);
return db
.deleteFrom('events')
.where('id', 'in', () => query.clearSelect().select('id'))
.execute();
return db.transaction().execute(async (trx) => {
const query = getFiltersQuery(filters).clearSelect().select('id');
await trx.deleteFrom('tags')
.where('event_id', 'in', () => query)
.where('tag', 'not in', ['d', 'proxy'])
.execute();
return trx.deleteFrom('events')
.where('id', 'in', () => query)
.execute();
});
}
/** Get number of events that would be returned by filters. */