@atls/nestjs-dataloader 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -0
- package/dist/constants.d.ts +1 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/loader.decorator.d.ts +1 -0
- package/dist/decorators/order-result-by-key.decorator.d.ts +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/interceptors/data-loader.interceptor.d.ts +10 -0
- package/dist/interceptors/index.d.ts +1 -0
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/interfaces/nest-dataloader.interfaces.d.ts +4 -0
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Установка
|
|
2
|
+
```bash
|
|
3
|
+
yarn add @atls/nestjs-dataloader
|
|
4
|
+
```
|
|
5
|
+
|
|
6
|
+
# Использование
|
|
7
|
+
1. Импортируйте DataLoaderModule в ваш модуль:
|
|
8
|
+
```typescript
|
|
9
|
+
import { DataLoaderModule } from '@atls/nestjs-dataloader';
|
|
10
|
+
|
|
11
|
+
@Module({
|
|
12
|
+
imports: [DataLoaderModule],
|
|
13
|
+
})
|
|
14
|
+
export class AppModule {}
|
|
15
|
+
```
|
|
16
|
+
2. Создайте свой кастомный DataLoader:
|
|
17
|
+
```typescript
|
|
18
|
+
import * as DataLoader from 'dataloader';
|
|
19
|
+
import { Injectable } from '@nestjs/common';
|
|
20
|
+
|
|
21
|
+
@Injectable()
|
|
22
|
+
export class MyDataLoader extends DataLoader<string, string> {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(async (keys: string[]) => {
|
|
25
|
+
// Ваш код для загрузки данных пачками
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
3. Зарегистрируйте ваш DataLoader в провайдерах:
|
|
31
|
+
```typescript
|
|
32
|
+
import { MyDataLoader } from './my-dataloader';
|
|
33
|
+
|
|
34
|
+
@Module({
|
|
35
|
+
providers: [MyDataLoader],
|
|
36
|
+
})
|
|
37
|
+
export class AppModule {}
|
|
38
|
+
```
|
|
39
|
+
4. Инжектируйте DataLoader в резолверы и сервисы:
|
|
40
|
+
```typescript
|
|
41
|
+
import { MyDataLoader } from './my-dataloader';
|
|
42
|
+
|
|
43
|
+
@Injectable()
|
|
44
|
+
export class MyService {
|
|
45
|
+
constructor(private readonly dataLoader: MyDataLoader) {}
|
|
46
|
+
|
|
47
|
+
async getData(key: string) {
|
|
48
|
+
return this.dataLoader.load(key);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GET_LOADER_CONTEXT_KEY: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Loader: (type: string) => ParameterDecorator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const OrderResultByKey: (key?: string, defaultValue?: undefined) => (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CallHandler } from '@nestjs/common';
|
|
2
|
+
import { ExecutionContext } from '@nestjs/common';
|
|
3
|
+
import { NestInterceptor } from '@nestjs/common';
|
|
4
|
+
import { ModuleRef } from '@nestjs/core';
|
|
5
|
+
import { Observable } from 'rxjs';
|
|
6
|
+
export declare class DataLoaderInterceptor implements NestInterceptor {
|
|
7
|
+
private readonly moduleRef;
|
|
8
|
+
constructor(moduleRef: ModuleRef);
|
|
9
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './data-loader.interceptor';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './nest-dataloader.interfaces';
|