Разделение методов создания и обновления элементов, добавление полей author, description, service_name. Исправление бага при котором не удалялось апи. Удаление из ответа лишних полей __v и _id
This commit is contained in:
@ -1,9 +1,15 @@
|
||||
import { Controller, Get, Post, Body, Param, Options, Header, Delete, HttpCode } from '@nestjs/common';
|
||||
import { Controller, Get, Post, Body, Param, Options, Header, Delete, HttpCode, Put } from '@nestjs/common';
|
||||
import {StoreService} from './store.service';
|
||||
import {Store, StoreResponse, StoreRequest} from './store.schema';
|
||||
import {Store, StoreRequest} from './store.schema';
|
||||
import {ApiResponse} from '@nestjs/swagger';
|
||||
import {ALLOW_ORIGIN_ALL, ALLOW_METHOD, ALLOW_CREDENTIALS, CONTENT_LENGTH, ALLOW_HEADERS} from 'src/consts';
|
||||
|
||||
const prepareStoreToStoreRequest = ({
|
||||
key, value, description, service_name, author
|
||||
}: Store): StoreRequest => ({
|
||||
key, value, description, service_name, author,
|
||||
});
|
||||
|
||||
@Controller('store')
|
||||
export class StoreController {
|
||||
constructor(
|
||||
@ -15,10 +21,11 @@ export class StoreController {
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: 'Список всех пар ключ-значение',
|
||||
type: [StoreResponse],
|
||||
type: [StoreRequest],
|
||||
})
|
||||
async findAll(): Promise<Store[]> {
|
||||
return this.storeService.findAll();
|
||||
async findAll(): Promise<StoreRequest[]> {
|
||||
const storeList = await this.storeService.findAll();
|
||||
return storeList.map(prepareStoreToStoreRequest);
|
||||
}
|
||||
|
||||
@Get(':key')
|
||||
@ -26,21 +33,35 @@ export class StoreController {
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: 'Возвращает пару ключ-значение по ключу',
|
||||
type: StoreResponse,
|
||||
type: StoreRequest,
|
||||
})
|
||||
async findOne(@Param() {key}: {key: string}): Promise<Store> {
|
||||
return this.storeService.findOne(key);
|
||||
async findOne(@Param() {key}: {key: string}): Promise<StoreRequest> {
|
||||
const store = await this.storeService.findOne(key);
|
||||
return prepareStoreToStoreRequest(store);
|
||||
}
|
||||
|
||||
@Post()
|
||||
@Header(...ALLOW_ORIGIN_ALL)
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: 'Создает новую пару ключ-значение или заменяет существующую по ключу',
|
||||
type: StoreResponse,
|
||||
description: 'Создает новую пару ключ-значение',
|
||||
type: StoreRequest,
|
||||
})
|
||||
async create(@Body() createStoreClass: StoreRequest): Promise<Store> {
|
||||
return this.storeService.create(createStoreClass);
|
||||
async create(@Body() createStoreClass: StoreRequest): Promise<StoreRequest> {
|
||||
const store = await this.storeService.create(createStoreClass);
|
||||
return prepareStoreToStoreRequest(store);
|
||||
}
|
||||
|
||||
@Put()
|
||||
@Header(...ALLOW_ORIGIN_ALL)
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: 'Обновляет по ключу объект и мета-поля, кроме author',
|
||||
type: StoreRequest,
|
||||
})
|
||||
async update(@Body() updateStoreClass: StoreRequest): Promise<StoreRequest> {
|
||||
const store = await this.storeService.update(updateStoreClass);
|
||||
return prepareStoreToStoreRequest(store);
|
||||
}
|
||||
|
||||
@Delete(':key')
|
||||
@ -48,10 +69,11 @@ export class StoreController {
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: 'Удаляет пару ключ-значение по ключу',
|
||||
type: String,
|
||||
type: StoreRequest,
|
||||
})
|
||||
async removeOne(@Param() {key}: {key: string}): Promise<string> {
|
||||
return this.storeService.removeOne(key);
|
||||
async removeOne(@Param() {key}: {key: string}): Promise<StoreRequest> {
|
||||
const store = await this.storeService.removeOne(key);
|
||||
return prepareStoreToStoreRequest(store);
|
||||
}
|
||||
|
||||
@Options()
|
||||
|
||||
Reference in New Issue
Block a user