Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 1x 3x 3x 2x 2x 1x 1x 1x | import { Inject, Injectable } from '@nestjs/common';
import { Blog, BlogPrincipal, BlogRecord } from './models/blog.model';
import { IBlogRepository } from './blog.repository';
import { BlogRepository } from '../adapters/database/blog.repository';
import { CommentRepository } from '../adapters/database/comment.repository';
import { ICommentRepository } from './comment.repository';
interface IBlogService {
search(
search?: string,
limit?: number,
skip?: number,
): Promise<BlogPrincipal[]>;
get(id: string): Promise<Blog | null>;
create(blog: BlogRecord): Promise<BlogPrincipal>;
update(id: string, blog: BlogRecord): Promise<BlogPrincipal>;
delete(id: string): Promise<void>;
}
@Injectable()
class BlogService implements IBlogService {
constructor(
@Inject(BlogRepository) private readonly repo: IBlogRepository,
@Inject(CommentRepository) private readonly commentRepo: ICommentRepository,
) {}
create(blog: BlogRecord): Promise<BlogPrincipal> {
return this.repo.create(blog);
}
delete(id: string): Promise<void> {
return this.repo.delete(id);
}
async get(id: string): Promise<Blog | null> {
const blog = await this.repo.get(id);
if (blog == null) return blog;
const comments = await this.commentRepo.search(
undefined,
undefined,
undefined,
id,
);
return new Blog(blog, comments);
}
search(
search?: string,
limit?: number,
skip?: number,
): Promise<BlogPrincipal[]> {
return this.repo.search(search, limit, skip);
}
update(id: string, blog: BlogRecord): Promise<BlogPrincipal> {
return this.repo.update(id, blog);
}
}
export { BlogService };
export type { IBlogService };
|