diff --git a/components/EventGallery.vue b/components/EventGallery.vue index b9b4da4..17b98a7 100644 --- a/components/EventGallery.vue +++ b/components/EventGallery.vue @@ -1,13 +1,42 @@ - - - - - - +const route = useRoute(); +const { data: photos, pending, error } = useFetch(`/api/events/${route.params.id}/photos`) +const isOpen = ref(false); +const photoSelected = ref(null); - \ No newline at end of file +watch(isOpen, (value) => { + setTimeout(() => { + if (!value) { + photoSelected.value = null; + } + }, 500); +}); + + + + Loading... + + + {{ error }} + + + + openModal(photo)" /> + {{ photo.user.name }} + + + + + + + {{ photoSelected?.user.name }} + + + diff --git a/server/api/events/[id]/photos/index.get.ts b/server/api/events/[id]/photos/index.get.ts new file mode 100644 index 0000000..7a69a6a --- /dev/null +++ b/server/api/events/[id]/photos/index.get.ts @@ -0,0 +1,33 @@ +import { prisma } from "~/server/util/db"; + +export default defineEventHandler(async event => { + if (!event.context.user?.id) { + throw createError({ + statusCode: 403, + }); + } + const id = getRouterParam(event, "id"); + if (!id) { + throw createError({ + statusCode: 400, + statusMessage: "Event ID is required", + }) + } + if (!Number.isInteger(Number(id))) { + throw createError({ + statusCode: 400, + statusMessage: "Event ID must be a integer", + }) + } + + const photos = await prisma.photo.findMany({ + where: { + event_id: Number(id), + }, + include: { + user: true, + }, + }); + + return photos; +});
Loading...
{{ photo.user.name }}
{{ photoSelected?.user.name }}