db/unattached-media: refactor queries, DRY

This commit is contained in:
Alex Gleason 2023-09-09 22:03:02 -05:00
parent 43499f2dfd
commit 0d343fa190
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
1 changed files with 12 additions and 11 deletions

View File

@ -10,6 +10,7 @@ interface UnattachedMedia {
uploaded_at: Date; uploaded_at: Date;
} }
/** Add unattached media into the database. */
async function insertUnattachedMedia(media: Omit<UnattachedMedia, 'id' | 'uploaded_at'>) { async function insertUnattachedMedia(media: Omit<UnattachedMedia, 'id' | 'uploaded_at'>) {
const result = { const result = {
id: uuid62.v4(), id: uuid62.v4(),
@ -24,8 +25,8 @@ async function insertUnattachedMedia(media: Omit<UnattachedMedia, 'id' | 'upload
return result; return result;
} }
/** Find attachments that exist but aren't attached to any events. */ /** Select query for unattached media. */
function getUnattachedMedia(until: Date) { function selectUnattachedMediaQuery() {
return db.selectFrom('unattached_media') return db.selectFrom('unattached_media')
.select([ .select([
'unattached_media.id', 'unattached_media.id',
@ -33,27 +34,27 @@ function getUnattachedMedia(until: Date) {
'unattached_media.url', 'unattached_media.url',
'unattached_media.data', 'unattached_media.data',
'unattached_media.uploaded_at', 'unattached_media.uploaded_at',
]) ]);
}
/** Find attachments that exist but aren't attached to any events. */
function getUnattachedMedia(until: Date) {
return selectUnattachedMediaQuery()
.leftJoin('tags', 'unattached_media.url', 'tags.value') .leftJoin('tags', 'unattached_media.url', 'tags.value')
.where('uploaded_at', '<', until) .where('uploaded_at', '<', until)
.execute(); .execute();
} }
/** Delete unattached media by URL. */
function deleteUnattachedMediaByUrl(url: string) { function deleteUnattachedMediaByUrl(url: string) {
return db.deleteFrom('unattached_media') return db.deleteFrom('unattached_media')
.where('url', '=', url) .where('url', '=', url)
.execute(); .execute();
} }
/** Get unattached media by IDs. */
function getUnattachedMediaByIds(ids: string[]) { function getUnattachedMediaByIds(ids: string[]) {
return db.selectFrom('unattached_media') return selectUnattachedMediaQuery()
.select([
'unattached_media.id',
'unattached_media.pubkey',
'unattached_media.url',
'unattached_media.data',
'unattached_media.uploaded_at',
])
.where('id', 'in', ids) .where('id', 'in', ids)
.execute(); .execute();
} }