import { Arg, Ctx, Query, Resolver } from 'type-graphql'; import { getCustomRepository } from 'typeorm'; import { PageRepository } from '@/repositories'; import { ContextType } from '@/types'; import { Product } from '../../entities'; import { ProductInput, ProductPayload } from './types'; @Resolver(Product) export class ProductResolver { @Query(() => ProductPayload, { nullable: false }) async product( @Arg('input') input: ProductInput, @Ctx() context: ContextType ): Promise { const page = await getCustomRepository(PageRepository).getByUrl(input.url); const product = page.product; if (!product) { throw new Error('Could not find product with that URL'); } product.pages = page.relatedPages(context); page.id = page.firebaseId; return { product, page }; } }