@arsendoman/book-publisher-store
Version:
A Nest.js package for book publishing and storing
130 lines (121 loc) • 3.93 kB
text/typescript
import {
Body,
Controller,
Delete,
Get,
Param,
Patch,
Post,
Query,
SerializeOptions,
UseGuards,
UsePipes,
ValidationPipe,
} from '@nestjs/common';
import { Roles } from '../../database/mongo/schemas';
import { AllowedRoles } from 'src/application/decorators/roles.decorator';
import { PermissionGuard } from 'src/application/guards/auth.guard';
import { JwtAuthGuard } from '../../application/guards/jwt.auth.guard';
import { ApiBearerAuth, ApiHeader, ApiParam, ApiQuery } from '@nestjs/swagger';
import { BookResponseDto } from '../../application/dtos/response/book/book.response.dto';
import { BooksService } from '../../application/services/books/books.service';
import { BookCreateDto } from '../../application/dtos/request/book/book.create.dto';
import { BookUpdateDto } from '../../application/dtos/request/book/book.update.dto';
import { BooksFilterDto } from '../../application/dtos/request/book/books.filter.dto';
import { SortingParams } from '../../application/decorators/sort.decorator';
import { PaginatedResponseDto } from '../../application/dtos/response/paginatedResponse.dto';
import { PaginationParams } from '../../application/decorators/pagination.decorator';
import { IPagination } from '../../core/interfaces/pagination.interface';
export class BooksController {
constructor(private readonly booksService: BooksService) {}
getBookInfo( id: string): Promise<BookResponseDto> {
return this.booksService.getBookInfo(id);
}
getBooksFiltersTotalDetails(
filtersDto: BooksFilterDto,
): Promise<any> {
return this.booksService.getFiltersTotalDetails(filtersDto);
}
getBooksFiltersRangesDetails(
filtersDto: BooksFilterDto,
): Promise<any> {
return this.booksService.getFiltersRangeDetails(filtersDto);
}
getBooks(
pagination: IPagination,
sorting,
filtersDto: BooksFilterDto,
): Promise<PaginatedResponseDto<BookResponseDto>> {
return this.booksService.fetchBookList(pagination, sorting, filtersDto);
}
publishBook( bookCreateDto: BookCreateDto): Promise<BookResponseDto> {
return this.booksService.publishBook(bookCreateDto);
}
updateBook(
id: string,
bookUpdateDto: BookUpdateDto,
): Promise<BookResponseDto> {
return this.booksService.updateBook(id, bookUpdateDto);
}
deleteBook( id: string) {
this.booksService.deleteBook(id);
}
}