Vercel/src/photo/actions.ts
Sam Becker df11a86181 Init
2023-09-05 09:00:57 -05:00

52 lines
1.3 KiB
TypeScript

'use server';
import { revalidatePath } from 'next/cache';
import {
sqlDeletePhoto,
sqlInsertPhotoIntoDb,
sqlUpdatePhotoInDb,
} from '@/services/postgres';
import { convertFormDataToPhoto } from './form';
import { redirect } from 'next/navigation';
import {
convertUploadToPhoto,
deleteBlobPhoto,
} from '@/services/blob';
import { revalidatePhotosTag } from '@/cache';
export async function createPhotoAction(formData: FormData) {
const photo = convertFormDataToPhoto(formData);
const updatedUrl = await convertUploadToPhoto(photo.url);
if (updatedUrl) { photo.url = updatedUrl; }
await sqlInsertPhotoIntoDb(photo);
revalidatePhotosTag(true);
redirect('/admin/photos');
}
export async function updatePhotoAction(formData: FormData) {
const photo = convertFormDataToPhoto(formData);
await sqlUpdatePhotoInDb(photo);
revalidatePhotosTag(true);
redirect('/admin/photos');
}
export async function deletePhotoAction(formData: FormData) {
await deleteBlobPhoto(formData.get('url') as string);
await sqlDeletePhoto(formData.get('id') as string);
revalidatePhotosTag(true);
};
export async function deleteBlobPhotoAction(formData: FormData) {
await deleteBlobPhoto(formData.get('url') as string);
revalidatePath('/admin/photos');
};