From 4c59a7caa0170adfc94ac9d5dadaf3d2e9e08cf8 Mon Sep 17 00:00:00 2001 From: Enoch Osarenren Date: Tue, 11 Jun 2024 21:08:26 +0100 Subject: [PATCH] added todo query to graph --- src/graphql.ts | 2 ++ src/todos/todos.module.ts | 11 ++++++----- src/todos/todos.resolver.ts | 24 ++++++++++++++++++++++++ src/users/users.graphql | 1 + src/users/users.module.ts | 2 +- 5 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 src/todos/todos.resolver.ts diff --git a/src/graphql.ts b/src/graphql.ts index e79d136..881c12d 100644 --- a/src/graphql.ts +++ b/src/graphql.ts @@ -91,6 +91,8 @@ export abstract class IQuery { abstract albums(first?: Nullable, albumId?: Nullable, userId?: Nullable): Nullable[]> | Promise[]>>; abstract photos(first?: Nullable, photoId?: Nullable, albumId?: Nullable): Nullable[]> | Promise[]>>; + + abstract todos(first?: Nullable, todoId?: Nullable, userId?: Nullable): Nullable[]> | Promise[]>>; } type Nullable = T | null; diff --git a/src/todos/todos.module.ts b/src/todos/todos.module.ts index 62cd577..c3efcce 100644 --- a/src/todos/todos.module.ts +++ b/src/todos/todos.module.ts @@ -1,14 +1,15 @@ -import { Module } from '@nestjs/common'; +import { Module, forwardRef } from '@nestjs/common'; import { TodosService } from './todos.service'; -import { HttpModule } from '@nestjs/axios'; import { JsonplaceholderModule } from 'src/jsonplaceholder/jsonplaceholder.module'; +import { TodosResolver } from './todos.resolver'; +import { UserModule } from 'src/users/users.module'; @Module({ imports: [ - HttpModule, - JsonplaceholderModule + JsonplaceholderModule, + forwardRef(() => UserModule) ], - providers: [TodosService], + providers: [TodosService, TodosResolver], exports: [TodosService] }) export class TodosModule {} diff --git a/src/todos/todos.resolver.ts b/src/todos/todos.resolver.ts new file mode 100644 index 0000000..1099e4d --- /dev/null +++ b/src/todos/todos.resolver.ts @@ -0,0 +1,24 @@ +import { Args, Parent, Query, ResolveField, Resolver } from "@nestjs/graphql"; +import { TodosService } from "./todos.service"; +import { Todo, User } from "src/graphql"; +import { UserService } from "src/users/users.service"; + + +@Resolver('Todo') +export class TodosResolver { + + constructor( + private readonly todosService: TodosService, + private readonly usersService: UserService + ) {} + + @Query('todos') + async getTodos(@Args() args): Promise { + return await this.todosService.getTodos(args) + } + + @ResolveField('user') + async getTodoUser(@Parent() todo): Promise { + return await this.usersService.getUserById(todo.userId) + } +} \ No newline at end of file diff --git a/src/users/users.graphql b/src/users/users.graphql index 7fea7ba..59e88b8 100644 --- a/src/users/users.graphql +++ b/src/users/users.graphql @@ -76,4 +76,5 @@ type Query { comments(first: Int, commentId: Int, postId: Int): [Comment] albums(first: Int, albumId: Int, userId: Int): [Album] photos(first: Int, photoId: Int, albumId: Int): [Photo] + todos(first: Int, todoId: Int, userId: Int): [Todo] } \ No newline at end of file diff --git a/src/users/users.module.ts b/src/users/users.module.ts index 199e0ad..9a8d35d 100644 --- a/src/users/users.module.ts +++ b/src/users/users.module.ts @@ -10,7 +10,7 @@ import { JsonplaceholderModule } from 'src/jsonplaceholder/jsonplaceholder.modul imports: [ forwardRef(() => PostsModule), forwardRef(() => AlbumsModule), - TodosModule, + forwardRef(() => TodosModule), JsonplaceholderModule ], providers: [UsersResolver, UserService],