From 449dfee86c7e5681df7c9e954837f31528fa2c1a Mon Sep 17 00:00:00 2001 From: Amit Jakubowicz Date: Mon, 25 Nov 2019 11:17:47 +0100 Subject: [PATCH] Fetch images --- @types/graphql.d.ts | 1 + src/Calendar/Event.entity.ts | 2 +- src/Events/eventsResolvers.ts | 28 +++++++++++++++++++++------- src/schema.graphql | 1 + 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/@types/graphql.d.ts b/@types/graphql.d.ts index 1ceb6a0..380c636 100644 --- a/@types/graphql.d.ts +++ b/@types/graphql.d.ts @@ -130,6 +130,7 @@ declare namespace GQL { interface IEventImages { __typename: 'EventImages'; + event: ICalendarEvent | null; thumb: IEventImage | null; cover: IEventImage | null; poster: IEventImage | null; diff --git a/src/Calendar/Event.entity.ts b/src/Calendar/Event.entity.ts index a296c9f..c4ba497 100644 --- a/src/Calendar/Event.entity.ts +++ b/src/Calendar/Event.entity.ts @@ -85,7 +85,7 @@ export class Event extends BaseEntity { @OneToMany(type => EventImage, image => image.event, { onDelete: 'CASCADE' }) - images: EventImage[] + images: Promise @Column(type => EventLocation) location: EventLocation diff --git a/src/Events/eventsResolvers.ts b/src/Events/eventsResolvers.ts index 241d944..065756c 100644 --- a/src/Events/eventsResolvers.ts +++ b/src/Events/eventsResolvers.ts @@ -8,7 +8,7 @@ import { getTags } from "./EventsService" import { equals } from "ramda" import { User } from "../Auth/User.entity" import { hasAnyRole } from "../Auth/authUtils" -import { EventTag } from "../Calendar/EventTag.entity" +import { ImageType } from "../Image/EventImage.entity"; const resolvers: ResolverMap = { Query: { @@ -53,9 +53,17 @@ const resolvers: ResolverMap = { }, tags: async (event: Event) => { return event.tags - } + }, + images: async (event: Event) => { + const allImages = await event.images + return { + thumb: allImages.filter(image => image.type === ImageType.Thumbnail)[0], + cover: allImages.filter(image => image.type === ImageType.Cover)[0], + poster: allImages.filter(image => image.type === ImageType.Poster)[0], + gallery: allImages.filter(image => image.type === ImageType.Gallery), + } + }, }, - EventOccurrence: { start: (eOcc: EventOccurrence) => { return eOcc.start @@ -105,7 +113,7 @@ const resolvers: ResolverMap = { } if (input.tagNames) { const tags = await getTags(input.tagNames) - console.log('will set tags', tags) + console.log("will set tags", tags) event.tags = Promise.resolve(tags) } event.location = input.location @@ -124,7 +132,10 @@ const resolvers: ResolverMap = { throw Error("not authenticated") } const event = await Event.findOne(id) - const isSuperUser = hasAnyRole(await context.user.roles, ['admin','embassador']) + const isSuperUser = hasAnyRole(await context.user.roles, [ + "admin", + "embassador", + ]) const isOwner = (await event.owner).id !== context.user.id if (!(isSuperUser || isOwner)) { @@ -162,7 +173,7 @@ const resolvers: ResolverMap = { } if (input.tagNames) { const tagsToSet = await getTags(input.tagNames) - console.log('tagsToSet, ', tagsToSet) + console.log("tagsToSet, ", tagsToSet) event.tags = Promise.resolve(tagsToSet) } if (input.location) { @@ -173,7 +184,10 @@ const resolvers: ResolverMap = { deleteEvent: async (_, id: string, context: Context): Promise => { const event = await Event.findOne(id) - const isSuperUser = hasAnyRole(await context.user.roles, ['admin','embassador']) + const isSuperUser = hasAnyRole(await context.user.roles, [ + "admin", + "embassador", + ]) const isOwner = (await event.owner).id !== context.user.id if (!(isSuperUser || isOwner)) { diff --git a/src/schema.graphql b/src/schema.graphql index 46f74b3..93eddc9 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -48,6 +48,7 @@ type EventImage { } type EventImages { + event: CalendarEvent thumb: EventImage cover: EventImage poster: EventImage