deleteRestaurant

김종민·2022년 7월 2일
0

Nuber-Server

목록 보기
20/34


들어가기
식당 주인이 식당을 지우는 API
어려울것 없이 dto, resolver, service를 따라가면 끝

1. delete-restaurant.dto.ts

import { Field, InputType, ObjectType } from '@nestjs/graphql';
import { MutationOutput } from 'src/common/dtos/output.dto';

@InputType()
export class DeleteRestaurantInput {
  @Field(() => Number)
  id: number;  ///delete할 식당id만 input으로 받음.
}

@ObjectType()
export class DeleteRestaurantOutput extends MutationOutput {}

2. resolver

  @Mutation(() => DeleteRestaurantOutput)
  @Role(['Owner'])
  deleteRestaurant(
    @AuthUser() owner: User,   ///loggedInUser가 식당주인일것!!
    @Args('input') deleteRestaurantInput: DeleteRestaurantInput,
  ): Promise<DeleteRestaurantOutput> {
    return this.restaurantService.deleteRestaurant(
      owner,
      deleteRestaurantInput,
    );
  }
  

3. service

  async deleteRestaurant(
    owner: User,
    { id }: DeleteRestaurantInput,
  ): Promise<DeleteRestaurantOutput> {
    try {
      const restaurant = await this.restaurants.findOne({ id });
      if (!restaurant) {
        return {
          ok: false,
          error: 'Restaurant not found',
        };
      }
      if (owner.id !== restaurant.ownerId) {
        return {
          ok: false,
          error: 'You are not Owner',
        };
      }
      await this.restaurants.delete(id);
      return {
        ok: true,
      };
    } catch {
      return {
        ok: false,
        error: 'Could not delete restaurant',
      };
    }
    

어려울것 없이 쉬운부분,!!

profile
코딩하는초딩쌤

0개의 댓글