1.0.0-beta.6 • Published 11 months ago
@linhx/nest-repo-mongodb v1.0.0-beta.6
nest-repo-mongodb
Achieve abstraction in repository pattern (NestJs)
Install
npm i @nestjs/mongoose mongoose
npm i @linhx/nest-repo @linhx/nest-repo-mongodb
Example
- Import module
import RepositoryMongodbModule from '@linhx/nest-repo-mongodb';
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { ProductModule } from './product/product.module';
@Module({
imports: [
MongooseModule.forRoot(process.env.MONGO_DB_URL, {
dbName: process.env.MONGO_DB_NAME,
replicaSet: process.env.MONGO_DB_REPLICA,
}),
RepositoryMongodbModule.forRoot(),
ProductModule,
],
})
export class AppModule {}
- Interface
// product.repository.ts
import { Transaction, Repository } from '@linhx/nest-repo';
import { ObjectId } from 'mongoose';
import { Product } from './entities/product.entity';
export interface ProductRepository extends Repository<Product, ObjectId> {
findByStore(trx: Transaction, storeId: string): Promise<Product[]>;
}
export const ProductRepositoryProviderName = 'ProductRepository';
- Implementation
// product.repository.impl.ts
import {
ProductRepository,
ProductRepositoryProviderName,
} from './product.repository';
import { Product, ProductDocument } from './entities/product.entity';
import { ClassProvider, Inject, Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import {
MongoTransaction,
DbMongo,
RepositoryImpl,
} from '@linhx/nest-repo-mongodb';
import { DB_PROVIDER } from '@linhx/nest-repo';
@Injectable()
export class ProductRepositoryImpl
extends RepositoryImpl<Product>
implements ProductRepository
{
constructor(
@Inject(DB_PROVIDER) private readonly db: DbMongo,
@InjectModel(Product.name) private productModel: Model<ProductDocument>,
) {
super(db, productModel);
}
findByStore(trx: MongoTransaction, storeId: string): Promise<Product[]> {
return this.findAll(trx, {
storeId,
});
}
}
export const ProductRepositoryProvider: ClassProvider = {
provide: ProductRepositoryProviderName,
useClass: ProductRepositoryImpl,
};
1.0.0-beta.2
12 months ago
1.0.0-beta.3
11 months ago
1.0.0-beta.4
11 months ago
1.0.0-beta.5
11 months ago
1.0.0-beta.0
1 year ago
1.0.0-beta.1
12 months ago
1.0.0-beta.6
11 months ago
0.0.14
1 year ago
0.0.15
1 year ago
0.0.16
1 year ago
0.0.17
1 year ago
0.0.18
1 year ago
0.0.11
1 year ago
0.0.12
1 year ago
0.0.10
2 years ago
0.0.9
2 years ago
0.0.8
2 years ago
0.0.7
2 years ago
0.0.6
2 years ago
0.0.5
2 years ago
0.0.4
2 years ago
0.0.3
2 years ago
0.0.2
2 years ago
0.0.1
2 years ago