npm install @toss/nestjs-aop
pnpm add @toss/nestjs-aop
yarn add @toss/nestjs-aop
@Module({
imports: [
// ...
AopModule,
],
})
export class AppModule {}
export const CACHE_DECORATOR = Symbol('CACHE_DECORATOR');
metadata
는 createDecorator의 두 번째 매개변수입니다.
@Aspect(CACHE_DECORATOR)
export class CacheDecorator implements LazyDecorator<any, CacheOptions> {
constructor(private readonly cache: Cache) {}
wrap({ method, metadata: options }: WrapParams<any, CacheOptions>) {
return (...args: any) => {
let cachedValue = this.cache.get(...args);
if (!cachedValue) {
cachedValue = method(...args);
this.cache.set(cachedValue, ...args);
}
return cachedValue;
};
}
}
@Module({
providers: [CacheDecorator],
})
export class CacheModule {}
options
는 wrap 메소드에서 얻을 수 있으며 사용될 수 있습니다.
export const Cache = (options: CacheOptions) => createDecorator(CACHE_DECORATOR, options)
export class SomeService {
@Cache({
// ...options(metadata value)
})
some() {
// ...
}
}
이 프로젝트에는 모든 분들의 기여를 환영합니다. 자세한 기여 가이드는 CONTRIBUTING.md를 참고하세요.
MIT © Viva Republica, Inc. LICENSE 파일을 참고하세요.