Skip to content

pirumu/nest-qualifier

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nest Qualifier

How it works

Add alias metadata to the class and use it as token injection.

How to install

# npm
npm i --save @nattogo/nest-qualifier

#yarn
yarn add @nattogo/nest-qualifier

How to use

IRepository.ts

export interface IRepository {
    findOne: (id: string) => Promise<any>;
}

MongoRepository.ts

import {Injectable} from "@nattogo/nest-qualifier";

@Injectable({
    alias: 'MongoRepository'
})
export class MongoRepositoryImlp implements IRepository {
    findOne(id: string): Promise<{ id: string }> {
        return Promise.resolve({
            id
        });
    }

}

MySQLRepository.ts

import {Injectable} from "@nattogo/nest-qualifier";

@Injectable({
    alias: 'MySQLRepository'
})
export class MySQLRepositoryImpl implements IRepository {
    findOne(id: string): Promise<{ id: string }> {
        return Promise.resolve({
            id
        });
    }

}

ProductService.ts

import {Injectable} from "@nestjs/common";
import {Qualifier} from "@nattogo/nest-qualifier";

@Injectable()
export class ProductService {
    public constructor(
        @Qualifier('MongoRepository') mongoRepository: IRepository,
        @Qualifier('MySQLRepository') mysqlRepository: IRepository
    ) {}
}

ProductModule.ts

import {Module} from "@nattogo/nest-qualifier";

@Module({
    providers: [
        MongoRepository,
        MySQLRepository,
    ],
})
export class ProductModule {
}

License

MIT License

About

Dynamic provider for Nest JS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published