diff --git a/src/resolvers/campaign.resolver.ts b/src/resolvers/campaign.resolver.ts index ee97d54..f4010d6 100644 --- a/src/resolvers/campaign.resolver.ts +++ b/src/resolvers/campaign.resolver.ts @@ -2,11 +2,33 @@ import { Resolver, Query, Args } from '@nestjs/graphql'; import { PrismaService } from 'src/prisma/prisma.service'; import { Campaign } from './models/campaign.model'; import { NotFoundException, BadRequestException } from '@nestjs/common'; +import { Logger } from '@nestjs/common'; @Resolver(() => Campaign) export class CampaignResolver { + private readonly logger = new Logger(CampaignResolver.name); + constructor(private prismaService: PrismaService) {} + @Query(() => [Campaign], { + name: 'getAllCampaigns', + nullable: 'items' + }) + async getAllCampaigns(): Promise { + try { + const campaigns = await this.prismaService.campaign.findMany({ + orderBy: { + createdAt: 'desc' + } + }); + return campaigns; + } catch (error) { + this.logger.error('Failed to retrieve campaigns', error.stack); + throw new Error('Unable to retrieve campaigns. Please try again later.'); + } + } +} + @Query(() => Campaign, { nullable: true }) async getCampaignById(@Args('id') id: number): Promise { // Validate ID format (assuming UUID format) @@ -27,4 +49,4 @@ export class CampaignResolver { return campaign; } -} +} \ No newline at end of file diff --git a/src/resolvers/resolvers.module.ts b/src/resolvers/resolvers.module.ts index 032fa46..39502da 100644 --- a/src/resolvers/resolvers.module.ts +++ b/src/resolvers/resolvers.module.ts @@ -1,8 +1,9 @@ import { Module } from '@nestjs/common'; import { CampaignResolver } from './campaign.resolver'; +import { PrismaModule } from 'src/prisma/prisma.module'; @Module({ - providers: [CampaignResolver], - exports: [CampaignResolver], + imports: [PrismaModule], + providers: [CampaignResolver] }) -export class ResolversModule {} +export class ResolversModule {} \ No newline at end of file