@arsendoman/book-publisher-store
Version:
A Nest.js package for book publishing and storing
54 lines (50 loc) • 1.47 kB
text/typescript
import { Injectable } from '@nestjs/common';
import { MapperService } from './mapper.service';
import { BookCommentResponseDto } from '../dtos/response/book/comments/book.comment.response.dto';
import { BookCommentUpdateDto } from '../dtos/request/comment/comment.update.dto';
import { BookCommentCreateDto } from '../dtos/request/comment/comment.create.dto';
import { BookComment } from '../../core/entities';
()
export class BookCommentMapperService extends MapperService<
BookComment,
BookCommentResponseDto
> {
async mapToDto(entity: BookComment): Promise<BookCommentResponseDto> {
return {
id: entity.id,
bookId: entity.bookId,
username: entity.username,
text: entity.text,
createdAt: entity.createdAt,
updatedAt: entity.updatedAt,
likesAmount: entity.likeInteractions.length,
dislikesAmount: entity.dislikeInteractions.length,
};
}
mapToEntityOnUpdate(
bookId: string,
username: string,
dto: BookCommentUpdateDto,
): BookComment {
return {
bookId: bookId,
username: username,
text: dto.text,
likeInteractions: undefined,
dislikeInteractions: undefined,
};
}
mapToEntityOnCreate(
bookId: string,
username: string,
dto: BookCommentCreateDto,
): BookComment {
return {
bookId: bookId,
username: username,
text: dto.text,
likeInteractions: [],
dislikeInteractions: [],
};
}
}