@arsendoman/book-publisher-store
Version:
A Nest.js package for book publishing and storing
55 lines (51 loc) • 1.94 kB
text/typescript
import { OnApplicationBootstrap } from '@nestjs/common';
import { IDataServices } from 'src/core/abstracts/data.source.abstract';
import {
Role,
Profile,
ProfileDocumnent,
RoleDocument,
BookDocument,
Book,
BookComment,
BookCommentDocument,
CommentCompliance,
CommentComplianceDocument,
} from './schemas';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { ProfileRepository } from './repositories/profile.repository';
import { RoleRepository } from './repositories/role.repository';
import { BookRepository } from './repositories/books.repository';
import { BookCommentsRepository } from './repositories/book.comments.repository';
import { CommentComplianceRepository } from './repositories/commentCompliance.repository';
export class MongoDataServices
implements IDataServices, OnApplicationBootstrap
{
roles: RoleRepository;
profiles: ProfileRepository;
books: BookRepository;
bookComments: BookCommentsRepository;
commentCompliance: CommentComplianceRepository;
constructor(
(Role.name)
private RoleRepository: Model<RoleDocument>,
(Profile.name)
private ProfileRepository: Model<ProfileDocumnent>,
(Book.name)
private BookRepository: Model<BookDocument>,
(BookComment.name)
private BookCommentsRepository: Model<BookCommentDocument>,
(CommentCompliance.name)
private CommentComplianceRepository: Model<CommentComplianceDocument>,
) {}
onApplicationBootstrap() {
this.roles = new RoleRepository(this.RoleRepository);
this.books = new BookRepository(this.BookRepository);
this.profiles = new ProfileRepository(this.ProfileRepository, ['role']);
this.bookComments = new BookCommentsRepository(this.BookCommentsRepository);
this.commentCompliance = new CommentComplianceRepository(
this.CommentComplianceRepository,
);
}
}