Skip to content

Instantly share code, notes, and snippets.

View newerton's full-sized avatar
🏖️
Working

Newerton newerton

🏖️
Working
View GitHub Profile
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { IDataServices } from '../../../core';
import { MongoDataServices } from './mongo-data-services.service';
@Module({
providers: [
{
provide: IDataServices,
useClass: MongoDataServices,
import { Injectable } from '@nestjs/common';
import { Book } from '../../../core/entities';
import { ICrmServices } from '../../../core/abstracts';
@Injectable()
export class SalesforceService implements ICrmServices {
bookAdded(book: Book): Promise<boolean> {
// Implement salesforce api logic
return Promise.resolve(true);
import { Injectable, OnApplicationBootstrap } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { IDataServices } from '../../../core';
import { MongoGenericRepository } from './mongo-generic-repository';
import {
Author,
AuthorDocument,
Book,
BookDocument,
import { Model } from 'mongoose';
import { IGenericRepository } from '../../../core';
export class MongoGenericRepository<T> implements IGenericRepository<T> {
private _repository: Model<T>;
private _populateOnFind: string[];
constructor(repository: Model<T>, populateOnFind: string[] = []) {
this._repository = repository;
this._populateOnFind = populateOnFind;
import { Controller, Post, Body } from '@nestjs/common';
import { CreateBookDto, CreateBookResponseDto } from '../core/dtos';
import { BookServices, BookFactoryService } from '../services/use-cases/book';
@Controller('api/book')
export class BookController {
constructor(
private bookServices: BookServices,
private bookFactoryService: BookFactoryService,
) {}
import { Book } from '../entities';
export class CreateBookResponseDto {
success: boolean;
createdBook: Book;
}
import { IsString, IsNotEmpty, IsDate } from 'class-validator';
export class CreateBookDto {
@IsString()
@IsNotEmpty()
title: string;
@IsNotEmpty()
authorId: any;
import { Injectable } from '@nestjs/common';
import { Book } from '../../../core/entities';
import { IDataServices, ICrmServices } from '../../../core/abstracts';
import { CreateBookDto, UpdateBookDto } from '../../../core/dtos';
import { BookFactoryService } from './book-factory.service';
@Injectable()
export class BookServices {
constructor(
private dataServices: IDataServices,
import { Book } from '../entities';
export abstract class ICrmServices {
abstract bookAdded(book: Book): Promise<boolean>;
}
import { Author, Book, Genre } from '../entities';
import { IGenericRepository } from './generic-repository.abstract';
export abstract class IDataServices {
abstract authors: IGenericRepository<Author>;
abstract books: IGenericRepository<Book>;
abstract genres: IGenericRepository<Genre>;
}