From 3c913c273f42e5e918be51965548c81a68aa8a9a Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Thu, 5 Oct 2023 11:31:49 -0500 Subject: [PATCH] Add global delete photo tag action --- src/cache/index.ts | 2 +- src/photo/actions.ts | 9 +++++++++ src/services/postgres.ts | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/cache/index.ts b/src/cache/index.ts index 178e0d05..be6d66c9 100644 --- a/src/cache/index.ts +++ b/src/cache/index.ts @@ -19,7 +19,7 @@ import { Camera, createCameraKey } from '@/camera'; const TAG_PHOTOS = 'photos'; const TAG_PHOTOS_COUNT = `${TAG_PHOTOS}-count`; -const TAG_PHOTOS_DATE_RANGE = `${TAG_PHOTOS}-date-range`;; +const TAG_PHOTOS_DATE_RANGE = `${TAG_PHOTOS}-date-range`; const TAG_TAGS = 'tags'; const TAG_CAMERAS = 'cameras'; const TAG_BLOB = 'blob'; diff --git a/src/photo/actions.ts b/src/photo/actions.ts index f27e7989..bb7f5f0a 100644 --- a/src/photo/actions.ts +++ b/src/photo/actions.ts @@ -3,6 +3,7 @@ import { sqlDeletePhoto, sqlInsertPhoto, + sqlDeletePhotoTagGlobally, sqlUpdatePhoto, } from '@/services/postgres'; import { convertFormDataToPhoto } from './form'; @@ -62,6 +63,14 @@ export async function deletePhotoAction(formData: FormData) { revalidatePhotosTag(); }; +export async function deletePhotoTagGloballyAction(formData: FormData) { + const tag = formData.get('tag') as string; + + await sqlDeletePhotoTagGlobally(tag); + + revalidatePhotosTag(); +} + export async function deleteBlobPhotoAction(formData: FormData) { await deleteBlobPhoto(formData.get('url') as string); diff --git a/src/services/postgres.ts b/src/services/postgres.ts index 7e44209d..3b308026 100644 --- a/src/services/postgres.ts +++ b/src/services/postgres.ts @@ -132,7 +132,7 @@ export const sqlUpdatePhoto = (photo: PhotoDbInsert) => WHERE id=${photo.id} `; -export const sqlRemovePhotoTag = (tag: string) => +export const sqlDeletePhotoTagGlobally = (tag: string) => sql` UPDATE photos SET tags=array_remove(tags, ${tag})