들어가기
식당 주인이 식당을 지우는 API
어려울것 없이 dto, resolver, service를 따라가면 끝
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 {}
@Mutation(() => DeleteRestaurantOutput)
@Role(['Owner'])
deleteRestaurant(
@AuthUser() owner: User, ///loggedInUser가 식당주인일것!!
@Args('input') deleteRestaurantInput: DeleteRestaurantInput,
): Promise<DeleteRestaurantOutput> {
return this.restaurantService.deleteRestaurant(
owner,
deleteRestaurantInput,
);
}
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',
};
}
어려울것 없이 쉬운부분,!!