@elsikora/nestjs-crud-automator 1.15.0-dev.1 → 1.16.0-dev.1
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 +41 -16
- package/dist/cjs/interface/class/api/subscriber/function-error-execution-context.interface.d.ts +2 -0
- package/dist/cjs/interface/class/api/subscriber/function-execution-context-data.interface.d.ts +38 -0
- package/dist/cjs/interface/class/api/subscriber/function-execution-context.interface.d.ts +19 -0
- package/dist/cjs/interface/class/api/subscriber/index.d.ts +2 -0
- package/dist/cjs/interface/class/api/subscriber/route-error-execution-context.interface.d.ts +2 -0
- package/dist/cjs/interface/class/api/subscriber/route-execution-context-data.interface.d.ts +62 -0
- package/dist/cjs/interface/class/api/subscriber/route-execution-context.interface.d.ts +19 -0
- package/dist/cjs/type/class/api/index.d.ts +1 -0
- package/dist/cjs/type/class/api/subscriber/function/after/create-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/after/delete-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/after/get/context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/after/get/index.d.ts +3 -0
- package/dist/cjs/type/class/api/subscriber/function/after/get/list-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/after/get/many-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/after/index.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/after/update-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/before/create-context.type.d.ts +5 -0
- package/dist/cjs/type/class/api/subscriber/function/before/delete-context.type.d.ts +5 -0
- package/dist/cjs/type/class/api/subscriber/function/before/get/context.type.d.ts +5 -0
- package/dist/cjs/type/class/api/subscriber/function/before/get/index.d.ts +3 -0
- package/dist/cjs/type/class/api/subscriber/function/before/get/list-context.type.d.ts +5 -0
- package/dist/cjs/type/class/api/subscriber/function/before/get/many-context.type.d.ts +5 -0
- package/dist/cjs/type/class/api/subscriber/function/before/index.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/function/before/update-context.type.d.ts +5 -0
- package/dist/cjs/type/class/api/subscriber/function/index.d.ts +2 -0
- package/dist/cjs/type/class/api/subscriber/index.d.ts +2 -0
- package/dist/cjs/type/class/api/subscriber/route/after/create-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/after/delete-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/after/get/context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/after/get/index.d.ts +3 -0
- package/dist/cjs/type/class/api/subscriber/route/after/get/list-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/after/get/many-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/after/index.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/after/update-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/before/create-context.type.d.ts +7 -0
- package/dist/cjs/type/class/api/subscriber/route/before/delete-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/before/get/context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/before/get/index.d.ts +3 -0
- package/dist/cjs/type/class/api/subscriber/route/before/get/list-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/before/get/many-context.type.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/before/index.d.ts +4 -0
- package/dist/cjs/type/class/api/subscriber/route/before/update-context.type.d.ts +7 -0
- package/dist/cjs/type/class/api/subscriber/route/index.d.ts +2 -0
- package/dist/cjs/type/class/index.d.ts +1 -0
- package/dist/esm/interface/class/api/subscriber/function-error-execution-context.interface.d.ts +2 -0
- package/dist/esm/interface/class/api/subscriber/function-execution-context-data.interface.d.ts +38 -0
- package/dist/esm/interface/class/api/subscriber/function-execution-context.interface.d.ts +19 -0
- package/dist/esm/interface/class/api/subscriber/index.d.ts +2 -0
- package/dist/esm/interface/class/api/subscriber/route-error-execution-context.interface.d.ts +2 -0
- package/dist/esm/interface/class/api/subscriber/route-execution-context-data.interface.d.ts +62 -0
- package/dist/esm/interface/class/api/subscriber/route-execution-context.interface.d.ts +19 -0
- package/dist/esm/type/class/api/index.d.ts +1 -0
- package/dist/esm/type/class/api/subscriber/function/after/create-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/after/delete-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/after/get/context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/after/get/index.d.ts +3 -0
- package/dist/esm/type/class/api/subscriber/function/after/get/list-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/after/get/many-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/after/index.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/after/update-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/before/create-context.type.d.ts +5 -0
- package/dist/esm/type/class/api/subscriber/function/before/delete-context.type.d.ts +5 -0
- package/dist/esm/type/class/api/subscriber/function/before/get/context.type.d.ts +5 -0
- package/dist/esm/type/class/api/subscriber/function/before/get/index.d.ts +3 -0
- package/dist/esm/type/class/api/subscriber/function/before/get/list-context.type.d.ts +5 -0
- package/dist/esm/type/class/api/subscriber/function/before/get/many-context.type.d.ts +5 -0
- package/dist/esm/type/class/api/subscriber/function/before/index.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/function/before/update-context.type.d.ts +5 -0
- package/dist/esm/type/class/api/subscriber/function/index.d.ts +2 -0
- package/dist/esm/type/class/api/subscriber/index.d.ts +2 -0
- package/dist/esm/type/class/api/subscriber/route/after/create-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/after/delete-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/after/get/context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/after/get/index.d.ts +3 -0
- package/dist/esm/type/class/api/subscriber/route/after/get/list-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/after/get/many-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/after/index.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/after/update-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/before/create-context.type.d.ts +7 -0
- package/dist/esm/type/class/api/subscriber/route/before/delete-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/before/get/context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/before/get/index.d.ts +3 -0
- package/dist/esm/type/class/api/subscriber/route/before/get/list-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/before/get/many-context.type.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/before/index.d.ts +4 -0
- package/dist/esm/type/class/api/subscriber/route/before/update-context.type.d.ts +7 -0
- package/dist/esm/type/class/api/subscriber/route/index.d.ts +2 -0
- package/dist/esm/type/class/index.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -470,23 +470,24 @@ In case of an error at any stage, execution is interrupted, and the correspondin
|
|
|
470
470
|
|
|
471
471
|
```typescript
|
|
472
472
|
import { Injectable } from "@nestjs/common";
|
|
473
|
-
import { ApiRouteSubscriber, ApiRouteSubscriberBase,
|
|
473
|
+
import { ApiRouteSubscriber, ApiRouteSubscriberBase, TApiSubscriberRouteAfterCreateContext } from "@elsikora/nestjs-crud-automator";
|
|
474
474
|
import { Post } from "./post.entity";
|
|
475
|
-
import { User } from "../user/user.entity"; // Assuming User is in request.user
|
|
476
475
|
|
|
477
476
|
@Injectable()
|
|
478
|
-
@ApiRouteSubscriber({ entity: Post, priority: 10 })
|
|
477
|
+
@ApiRouteSubscriber({ entity: Post, priority: 10 })
|
|
479
478
|
export class PostAuditSubscriber extends ApiRouteSubscriberBase<Post> {
|
|
480
479
|
// Hook is called AFTER a post is successfully created in the controller
|
|
481
|
-
async onAfterCreate(context:
|
|
482
|
-
const createdPost = context.result;
|
|
483
|
-
|
|
480
|
+
async onAfterCreate(context: TApiSubscriberRouteAfterCreateContext<Post>): Promise<Post> {
|
|
481
|
+
const createdPost = context.result;
|
|
482
|
+
|
|
483
|
+
// Fully typed access to authentication and request data
|
|
484
|
+
const currentUser = context.DATA.authenticationRequest?.user;
|
|
485
|
+
const clientIp = context.DATA.ip;
|
|
484
486
|
|
|
485
487
|
if (createdPost && currentUser) {
|
|
486
|
-
console.log(`AUDIT: User ${currentUser.id} created Post ${createdPost.id} with title "${createdPost.title}"`);
|
|
488
|
+
console.log(`AUDIT: User ${currentUser.id} created Post ${createdPost.id} ` + `with title "${createdPost.title}" from IP ${clientIp}`);
|
|
487
489
|
}
|
|
488
490
|
|
|
489
|
-
// We don't want to change the result, so we just return it
|
|
490
491
|
return createdPost;
|
|
491
492
|
}
|
|
492
493
|
}
|
|
@@ -502,25 +503,30 @@ In case of an error at any stage, execution is interrupted, and the correspondin
|
|
|
502
503
|
|
|
503
504
|
```typescript
|
|
504
505
|
import { Injectable } from "@nestjs/common";
|
|
505
|
-
import { ApiFunctionSubscriber, ApiFunctionSubscriberBase,
|
|
506
|
+
import { ApiFunctionSubscriber, ApiFunctionSubscriberBase, TApiSubscriberFunctionBeforeCreateContext, TApiFunctionCreateProperties } from "@elsikora/nestjs-crud-automator";
|
|
506
507
|
import { Post } from "./post.entity";
|
|
507
|
-
import slugify from "slugify";
|
|
508
|
+
import slugify from "slugify";
|
|
508
509
|
|
|
509
510
|
@Injectable()
|
|
510
511
|
@ApiFunctionSubscriber({ entity: Post })
|
|
511
512
|
export class PostSlugSubscriber extends ApiFunctionSubscriberBase<Post> {
|
|
512
513
|
// Hook is called BEFORE repository.save() is called
|
|
513
|
-
async onBeforeCreate(context:
|
|
514
|
-
|
|
514
|
+
async onBeforeCreate(context: TApiSubscriberFunctionBeforeCreateContext<Post>): Promise<TApiFunctionCreateProperties<Post>> {
|
|
515
|
+
// Fully typed access to transaction manager and repository
|
|
516
|
+
const manager = context.DATA.eventManager;
|
|
517
|
+
const repository = context.DATA.repository;
|
|
515
518
|
|
|
516
|
-
if (
|
|
519
|
+
if (context.result.title) {
|
|
517
520
|
// Modify the object, adding the slug
|
|
518
|
-
|
|
519
|
-
|
|
521
|
+
context.result.slug = slugify(context.result.title, {
|
|
522
|
+
lower: true,
|
|
523
|
+
strict: true,
|
|
524
|
+
});
|
|
525
|
+
console.log(`ENRICHMENT: Generated slug: ${context.result.slug}`);
|
|
520
526
|
}
|
|
521
527
|
|
|
522
528
|
// Return the modified object, which will be saved
|
|
523
|
-
return
|
|
529
|
+
return context.result;
|
|
524
530
|
}
|
|
525
531
|
}
|
|
526
532
|
```
|
|
@@ -536,6 +542,25 @@ In case of an error at any stage, execution is interrupted, and the correspondin
|
|
|
536
542
|
// ...
|
|
537
543
|
```
|
|
538
544
|
|
|
545
|
+
#### Helper Types for Simplified Usage
|
|
546
|
+
|
|
547
|
+
The library provides helper types that require only the Entity generic parameter, making subscriber implementation cleaner:
|
|
548
|
+
|
|
549
|
+
```typescript
|
|
550
|
+
// Instead of this:
|
|
551
|
+
IApiSubscriberFunctionExecutionContext<User, TApiFunctionCreateProperties<User>, IApiSubscriberFunctionExecutionContextData<User>>;
|
|
552
|
+
|
|
553
|
+
// Use this:
|
|
554
|
+
TApiSubscriberFunctionBeforeCreateContext<User>;
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
**Available helper types:**
|
|
558
|
+
|
|
559
|
+
- Function subscribers: `TApiSubscriberFunctionBeforeCreateContext`, `TApiSubscriberFunctionAfterCreateContext`, etc.
|
|
560
|
+
- Route subscribers: `TApiSubscriberRouteBeforeCreateContext`, `TApiSubscriberRouteAfterCreateContext`, etc.
|
|
561
|
+
|
|
562
|
+
These helpers provide full type safety and autocomplete for `context.DATA`, `context.ENTITY`, and `context.result`.
|
|
563
|
+
|
|
539
564
|
### Swagger Documentation
|
|
540
565
|
|
|
541
566
|
The library automatically generates Swagger/OpenAPI documentation for all endpoints. To enable it in your NestJS application:
|
package/dist/cjs/interface/class/api/subscriber/function-error-execution-context.interface.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { IApiSubscriberErrorExecutionContext } from './error-execution-cont
|
|
|
4
4
|
/**
|
|
5
5
|
* Error execution context for function subscriber callbacks.
|
|
6
6
|
* Contains function type information but no result field.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberFunctionExecutionContextData<E> for typed access.
|
|
7
9
|
*/
|
|
8
10
|
export interface IApiSubscriberFunctionErrorExecutionContext<E extends IApiBaseEntity, Input = unknown> extends IApiSubscriberErrorExecutionContext<E, Input> {
|
|
9
11
|
readonly FUNCTION_TYPE: EApiFunctionType;
|
package/dist/cjs/interface/class/api/subscriber/function-execution-context-data.interface.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../api-base-entity.interface';
|
|
2
|
+
import type { EntityManager, Repository } from "typeorm";
|
|
3
|
+
/**
|
|
4
|
+
* Data container for function subscriber execution context.
|
|
5
|
+
* Contains transaction manager and repository references.
|
|
6
|
+
* This interface provides typed access to the DATA field in function execution contexts.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* async onBeforeCreate(
|
|
10
|
+
* context: IApiSubscriberFunctionExecutionContext<
|
|
11
|
+
* User,
|
|
12
|
+
* TApiFunctionCreateProperties<User>,
|
|
13
|
+
* IApiSubscriberFunctionExecutionContextData<User>
|
|
14
|
+
* >
|
|
15
|
+
* ): Promise<TApiFunctionCreateProperties<User>> {
|
|
16
|
+
* const manager = context.DATA.eventManager;
|
|
17
|
+
* const repository = context.DATA.repository;
|
|
18
|
+
*
|
|
19
|
+
* if (manager) {
|
|
20
|
+
* await manager.save(RelatedEntity, { ... });
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* return context.result;
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface IApiSubscriberFunctionExecutionContextData<E extends IApiBaseEntity> {
|
|
28
|
+
/**
|
|
29
|
+
* Entity manager for transactional operations.
|
|
30
|
+
* Available when service methods are called with a transaction manager.
|
|
31
|
+
*/
|
|
32
|
+
eventManager?: EntityManager;
|
|
33
|
+
/**
|
|
34
|
+
* TypeORM repository instance for the entity.
|
|
35
|
+
* Provides access to database operations for the entity type.
|
|
36
|
+
*/
|
|
37
|
+
repository: Repository<E>;
|
|
38
|
+
}
|
|
@@ -4,6 +4,25 @@ import type { IApiSubscriberExecutionContext } from './execution-context.interfa
|
|
|
4
4
|
/**
|
|
5
5
|
* Execution context for function subscriber callbacks.
|
|
6
6
|
* Extends base execution context with function type information.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Result - Type of the result field (mutable data payload)
|
|
9
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberFunctionExecutionContextData<E> for typed access.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import type { IApiSubscriberFunctionExecutionContextData } from '@elsikora/nestjs-crud-automator';
|
|
13
|
+
*
|
|
14
|
+
* async onBeforeCreate(
|
|
15
|
+
* context: IApiSubscriberFunctionExecutionContext<
|
|
16
|
+
* User,
|
|
17
|
+
* TApiFunctionCreateProperties<User>,
|
|
18
|
+
* IApiSubscriberFunctionExecutionContextData<User>
|
|
19
|
+
* >
|
|
20
|
+
* ): Promise<TApiFunctionCreateProperties<User>> {
|
|
21
|
+
* const manager = context.DATA.eventManager;
|
|
22
|
+
* const repository = context.DATA.repository;
|
|
23
|
+
* // ...
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
7
26
|
*/
|
|
8
27
|
export interface IApiSubscriberFunctionExecutionContext<E extends IApiBaseEntity, Result = unknown, Input = unknown> extends IApiSubscriberExecutionContext<E, Result, Input> {
|
|
9
28
|
readonly FUNCTION_TYPE: EApiFunctionType;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export type * from './error-execution-context.interface';
|
|
2
2
|
export type * from './execution-context.interface';
|
|
3
3
|
export type * from './function-error-execution-context.interface';
|
|
4
|
+
export type * from './function-execution-context-data.interface';
|
|
4
5
|
export type * from './function-execution-context.interface';
|
|
5
6
|
export type * from './function.interface';
|
|
6
7
|
export type * from './interface';
|
|
7
8
|
export type * from './route-error-execution-context.interface';
|
|
9
|
+
export type * from './route-execution-context-data.interface';
|
|
8
10
|
export type * from './route-execution-context.interface';
|
|
9
11
|
export type * from './route.interface';
|
package/dist/cjs/interface/class/api/subscriber/route-error-execution-context.interface.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { IApiSubscriberErrorExecutionContext } from './error-execution-cont
|
|
|
4
4
|
/**
|
|
5
5
|
* Error execution context for route subscriber callbacks.
|
|
6
6
|
* Contains route type information but no result field.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberRouteExecutionContextData<E> or IApiSubscriberRouteExecutionContextDataExtended<E> for typed access.
|
|
7
9
|
*/
|
|
8
10
|
export interface IApiSubscriberRouteErrorExecutionContext<E extends IApiBaseEntity, Input = unknown> extends IApiSubscriberErrorExecutionContext<E, Input> {
|
|
9
11
|
readonly ROUTE_TYPE: EApiRouteType;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { EApiRouteType } from '../../../../enum/decorator/api/route-type.enum';
|
|
2
|
+
import type { IApiAuthenticationRequest } from '../../../api-authentication-request.interface';
|
|
3
|
+
import type { IApiBaseEntity } from '../../../api-base-entity.interface';
|
|
4
|
+
import type { IApiControllerProperties } from '../../../decorator/api/controller/properties.interface';
|
|
5
|
+
import type { IApiEntity } from '../../../entity/index';
|
|
6
|
+
/**
|
|
7
|
+
* Base data container for route subscriber execution context.
|
|
8
|
+
* Contains route metadata and configuration.
|
|
9
|
+
* This interface provides typed access to the DATA field in route execution contexts.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* async onBeforeCreate(
|
|
13
|
+
* context: IApiSubscriberRouteExecutionContext<
|
|
14
|
+
* User,
|
|
15
|
+
* { body: DeepPartial<User> },
|
|
16
|
+
* IApiSubscriberRouteExecutionContextData<User>
|
|
17
|
+
* >
|
|
18
|
+
* ): Promise<{ body: DeepPartial<User> }> {
|
|
19
|
+
* const entityMetadata = context.DATA.entityMetadata;
|
|
20
|
+
* const method = context.DATA.method;
|
|
21
|
+
* const methodName = context.DATA.methodName;
|
|
22
|
+
*
|
|
23
|
+
* return context.result;
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface IApiSubscriberRouteExecutionContextData<E extends IApiBaseEntity> {
|
|
28
|
+
/**
|
|
29
|
+
* Entity metadata containing information about entity columns, relations, and configuration.
|
|
30
|
+
*/
|
|
31
|
+
entityMetadata: IApiEntity<E>;
|
|
32
|
+
/**
|
|
33
|
+
* Route method type (create, update, delete, get, etc.).
|
|
34
|
+
*/
|
|
35
|
+
method: EApiRouteType;
|
|
36
|
+
/**
|
|
37
|
+
* Controller method name as defined in the controller.
|
|
38
|
+
*/
|
|
39
|
+
methodName: string;
|
|
40
|
+
/**
|
|
41
|
+
* Controller properties and configuration for the current route.
|
|
42
|
+
*/
|
|
43
|
+
properties: IApiControllerProperties<E>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Extended data container for route subscriber execution context.
|
|
47
|
+
* Includes request context (headers, IP, authentication) in addition to base route data.
|
|
48
|
+
*/
|
|
49
|
+
export interface IApiSubscriberRouteExecutionContextDataExtended<E extends IApiBaseEntity> extends IApiSubscriberRouteExecutionContextData<E> {
|
|
50
|
+
/**
|
|
51
|
+
* Authentication request information
|
|
52
|
+
*/
|
|
53
|
+
authenticationRequest?: IApiAuthenticationRequest;
|
|
54
|
+
/**
|
|
55
|
+
* HTTP request headers
|
|
56
|
+
*/
|
|
57
|
+
headers: Record<string, string>;
|
|
58
|
+
/**
|
|
59
|
+
* Client IP address
|
|
60
|
+
*/
|
|
61
|
+
ip: string;
|
|
62
|
+
}
|
|
@@ -4,6 +4,25 @@ import type { IApiSubscriberExecutionContext } from './execution-context.interfa
|
|
|
4
4
|
/**
|
|
5
5
|
* Execution context for route subscriber callbacks.
|
|
6
6
|
* Extends base execution context with route type information.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Result - Type of the result field (mutable data payload)
|
|
9
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberRouteExecutionContextData<E> or IApiSubscriberRouteExecutionContextDataExtended<E> for typed access.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import type { IApiSubscriberRouteExecutionContextData } from '@elsikora/nestjs-crud-automator';
|
|
13
|
+
*
|
|
14
|
+
* async onBeforeCreate(
|
|
15
|
+
* context: IApiSubscriberRouteExecutionContext<
|
|
16
|
+
* User,
|
|
17
|
+
* { body: DeepPartial<User> },
|
|
18
|
+
* IApiSubscriberRouteExecutionContextData<User>
|
|
19
|
+
* >
|
|
20
|
+
* ): Promise<{ body: DeepPartial<User> }> {
|
|
21
|
+
* const entityMetadata = context.DATA.entityMetadata;
|
|
22
|
+
* const method = context.DATA.method;
|
|
23
|
+
* // ...
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
7
26
|
*/
|
|
8
27
|
export interface IApiSubscriberRouteExecutionContext<E extends IApiBaseEntity, Result = unknown, Input = unknown> extends IApiSubscriberExecutionContext<E, Result, Input> {
|
|
9
28
|
readonly ROUTE_TYPE: EApiRouteType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type * from './subscriber/index';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterCreateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterDeleteContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterGetContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterGetListContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, Array<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterGetManyContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, Array<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberFunctionAfterCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberFunctionAfterDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberFunctionAfterUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterUpdateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionCreateProperties } from '../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeCreateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionCreateProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionDeleteCriteria } from '../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeDeleteContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionDeleteCriteria<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionGetProperties } from '../../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeGetContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionGetProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionGetListProperties } from '../../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeGetListContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionGetListProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionGetManyProperties } from '../../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeGetManyContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionGetManyProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberFunctionBeforeCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberFunctionBeforeDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberFunctionBeforeUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionUpdateProperties } from '../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeUpdateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionUpdateProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterCreateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterDeleteContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterGetContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterGetListContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, Array<E>, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterGetManyContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, Array<E>, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberRouteAfterCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberRouteAfterDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberRouteAfterUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterUpdateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
import type { DeepPartial } from "typeorm";
|
|
5
|
+
export type TApiSubscriberRouteBeforeCreateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, {
|
|
6
|
+
body: DeepPartial<E>;
|
|
7
|
+
}, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeDeleteContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeGetContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeGetListContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeGetManyContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberRouteBeforeCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberRouteBeforeDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberRouteBeforeUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
import type { DeepPartial } from "typeorm";
|
|
5
|
+
export type TApiSubscriberRouteBeforeUpdateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, {
|
|
6
|
+
body: DeepPartial<E>;
|
|
7
|
+
}, IApiSubscriberRouteExecutionContextData<E>>;
|
package/dist/esm/interface/class/api/subscriber/function-error-execution-context.interface.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { IApiSubscriberErrorExecutionContext } from './error-execution-cont
|
|
|
4
4
|
/**
|
|
5
5
|
* Error execution context for function subscriber callbacks.
|
|
6
6
|
* Contains function type information but no result field.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberFunctionExecutionContextData<E> for typed access.
|
|
7
9
|
*/
|
|
8
10
|
export interface IApiSubscriberFunctionErrorExecutionContext<E extends IApiBaseEntity, Input = unknown> extends IApiSubscriberErrorExecutionContext<E, Input> {
|
|
9
11
|
readonly FUNCTION_TYPE: EApiFunctionType;
|
package/dist/esm/interface/class/api/subscriber/function-execution-context-data.interface.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../api-base-entity.interface';
|
|
2
|
+
import type { EntityManager, Repository } from "typeorm";
|
|
3
|
+
/**
|
|
4
|
+
* Data container for function subscriber execution context.
|
|
5
|
+
* Contains transaction manager and repository references.
|
|
6
|
+
* This interface provides typed access to the DATA field in function execution contexts.
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* async onBeforeCreate(
|
|
10
|
+
* context: IApiSubscriberFunctionExecutionContext<
|
|
11
|
+
* User,
|
|
12
|
+
* TApiFunctionCreateProperties<User>,
|
|
13
|
+
* IApiSubscriberFunctionExecutionContextData<User>
|
|
14
|
+
* >
|
|
15
|
+
* ): Promise<TApiFunctionCreateProperties<User>> {
|
|
16
|
+
* const manager = context.DATA.eventManager;
|
|
17
|
+
* const repository = context.DATA.repository;
|
|
18
|
+
*
|
|
19
|
+
* if (manager) {
|
|
20
|
+
* await manager.save(RelatedEntity, { ... });
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* return context.result;
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface IApiSubscriberFunctionExecutionContextData<E extends IApiBaseEntity> {
|
|
28
|
+
/**
|
|
29
|
+
* Entity manager for transactional operations.
|
|
30
|
+
* Available when service methods are called with a transaction manager.
|
|
31
|
+
*/
|
|
32
|
+
eventManager?: EntityManager;
|
|
33
|
+
/**
|
|
34
|
+
* TypeORM repository instance for the entity.
|
|
35
|
+
* Provides access to database operations for the entity type.
|
|
36
|
+
*/
|
|
37
|
+
repository: Repository<E>;
|
|
38
|
+
}
|
|
@@ -4,6 +4,25 @@ import type { IApiSubscriberExecutionContext } from './execution-context.interfa
|
|
|
4
4
|
/**
|
|
5
5
|
* Execution context for function subscriber callbacks.
|
|
6
6
|
* Extends base execution context with function type information.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Result - Type of the result field (mutable data payload)
|
|
9
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberFunctionExecutionContextData<E> for typed access.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import type { IApiSubscriberFunctionExecutionContextData } from '@elsikora/nestjs-crud-automator';
|
|
13
|
+
*
|
|
14
|
+
* async onBeforeCreate(
|
|
15
|
+
* context: IApiSubscriberFunctionExecutionContext<
|
|
16
|
+
* User,
|
|
17
|
+
* TApiFunctionCreateProperties<User>,
|
|
18
|
+
* IApiSubscriberFunctionExecutionContextData<User>
|
|
19
|
+
* >
|
|
20
|
+
* ): Promise<TApiFunctionCreateProperties<User>> {
|
|
21
|
+
* const manager = context.DATA.eventManager;
|
|
22
|
+
* const repository = context.DATA.repository;
|
|
23
|
+
* // ...
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
7
26
|
*/
|
|
8
27
|
export interface IApiSubscriberFunctionExecutionContext<E extends IApiBaseEntity, Result = unknown, Input = unknown> extends IApiSubscriberExecutionContext<E, Result, Input> {
|
|
9
28
|
readonly FUNCTION_TYPE: EApiFunctionType;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export type * from './error-execution-context.interface';
|
|
2
2
|
export type * from './execution-context.interface';
|
|
3
3
|
export type * from './function-error-execution-context.interface';
|
|
4
|
+
export type * from './function-execution-context-data.interface';
|
|
4
5
|
export type * from './function-execution-context.interface';
|
|
5
6
|
export type * from './function.interface';
|
|
6
7
|
export type * from './interface';
|
|
7
8
|
export type * from './route-error-execution-context.interface';
|
|
9
|
+
export type * from './route-execution-context-data.interface';
|
|
8
10
|
export type * from './route-execution-context.interface';
|
|
9
11
|
export type * from './route.interface';
|
package/dist/esm/interface/class/api/subscriber/route-error-execution-context.interface.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import type { IApiSubscriberErrorExecutionContext } from './error-execution-cont
|
|
|
4
4
|
/**
|
|
5
5
|
* Error execution context for route subscriber callbacks.
|
|
6
6
|
* Contains route type information but no result field.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberRouteExecutionContextData<E> or IApiSubscriberRouteExecutionContextDataExtended<E> for typed access.
|
|
7
9
|
*/
|
|
8
10
|
export interface IApiSubscriberRouteErrorExecutionContext<E extends IApiBaseEntity, Input = unknown> extends IApiSubscriberErrorExecutionContext<E, Input> {
|
|
9
11
|
readonly ROUTE_TYPE: EApiRouteType;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { EApiRouteType } from '../../../../enum/decorator/api/route-type.enum';
|
|
2
|
+
import type { IApiAuthenticationRequest } from '../../../api-authentication-request.interface';
|
|
3
|
+
import type { IApiBaseEntity } from '../../../api-base-entity.interface';
|
|
4
|
+
import type { IApiControllerProperties } from '../../../decorator/api/controller/properties.interface';
|
|
5
|
+
import type { IApiEntity } from '../../../entity/index';
|
|
6
|
+
/**
|
|
7
|
+
* Base data container for route subscriber execution context.
|
|
8
|
+
* Contains route metadata and configuration.
|
|
9
|
+
* This interface provides typed access to the DATA field in route execution contexts.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* async onBeforeCreate(
|
|
13
|
+
* context: IApiSubscriberRouteExecutionContext<
|
|
14
|
+
* User,
|
|
15
|
+
* { body: DeepPartial<User> },
|
|
16
|
+
* IApiSubscriberRouteExecutionContextData<User>
|
|
17
|
+
* >
|
|
18
|
+
* ): Promise<{ body: DeepPartial<User> }> {
|
|
19
|
+
* const entityMetadata = context.DATA.entityMetadata;
|
|
20
|
+
* const method = context.DATA.method;
|
|
21
|
+
* const methodName = context.DATA.methodName;
|
|
22
|
+
*
|
|
23
|
+
* return context.result;
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface IApiSubscriberRouteExecutionContextData<E extends IApiBaseEntity> {
|
|
28
|
+
/**
|
|
29
|
+
* Entity metadata containing information about entity columns, relations, and configuration.
|
|
30
|
+
*/
|
|
31
|
+
entityMetadata: IApiEntity<E>;
|
|
32
|
+
/**
|
|
33
|
+
* Route method type (create, update, delete, get, etc.).
|
|
34
|
+
*/
|
|
35
|
+
method: EApiRouteType;
|
|
36
|
+
/**
|
|
37
|
+
* Controller method name as defined in the controller.
|
|
38
|
+
*/
|
|
39
|
+
methodName: string;
|
|
40
|
+
/**
|
|
41
|
+
* Controller properties and configuration for the current route.
|
|
42
|
+
*/
|
|
43
|
+
properties: IApiControllerProperties<E>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Extended data container for route subscriber execution context.
|
|
47
|
+
* Includes request context (headers, IP, authentication) in addition to base route data.
|
|
48
|
+
*/
|
|
49
|
+
export interface IApiSubscriberRouteExecutionContextDataExtended<E extends IApiBaseEntity> extends IApiSubscriberRouteExecutionContextData<E> {
|
|
50
|
+
/**
|
|
51
|
+
* Authentication request information
|
|
52
|
+
*/
|
|
53
|
+
authenticationRequest?: IApiAuthenticationRequest;
|
|
54
|
+
/**
|
|
55
|
+
* HTTP request headers
|
|
56
|
+
*/
|
|
57
|
+
headers: Record<string, string>;
|
|
58
|
+
/**
|
|
59
|
+
* Client IP address
|
|
60
|
+
*/
|
|
61
|
+
ip: string;
|
|
62
|
+
}
|
|
@@ -4,6 +4,25 @@ import type { IApiSubscriberExecutionContext } from './execution-context.interfa
|
|
|
4
4
|
/**
|
|
5
5
|
* Execution context for route subscriber callbacks.
|
|
6
6
|
* Extends base execution context with route type information.
|
|
7
|
+
* @template E - Entity type extending IApiBaseEntity
|
|
8
|
+
* @template Result - Type of the result field (mutable data payload)
|
|
9
|
+
* @template Input - Type of the DATA field (immutable context data). Use IApiSubscriberRouteExecutionContextData<E> or IApiSubscriberRouteExecutionContextDataExtended<E> for typed access.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import type { IApiSubscriberRouteExecutionContextData } from '@elsikora/nestjs-crud-automator';
|
|
13
|
+
*
|
|
14
|
+
* async onBeforeCreate(
|
|
15
|
+
* context: IApiSubscriberRouteExecutionContext<
|
|
16
|
+
* User,
|
|
17
|
+
* { body: DeepPartial<User> },
|
|
18
|
+
* IApiSubscriberRouteExecutionContextData<User>
|
|
19
|
+
* >
|
|
20
|
+
* ): Promise<{ body: DeepPartial<User> }> {
|
|
21
|
+
* const entityMetadata = context.DATA.entityMetadata;
|
|
22
|
+
* const method = context.DATA.method;
|
|
23
|
+
* // ...
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
7
26
|
*/
|
|
8
27
|
export interface IApiSubscriberRouteExecutionContext<E extends IApiBaseEntity, Result = unknown, Input = unknown> extends IApiSubscriberExecutionContext<E, Result, Input> {
|
|
9
28
|
readonly ROUTE_TYPE: EApiRouteType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type * from './subscriber/index';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterCreateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterDeleteContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterGetContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterGetListContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, Array<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterGetManyContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, Array<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberFunctionAfterCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberFunctionAfterDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberFunctionAfterUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberFunctionAfterUpdateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, E, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionCreateProperties } from '../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeCreateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionCreateProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionDeleteCriteria } from '../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeDeleteContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionDeleteCriteria<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionGetProperties } from '../../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeGetContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionGetProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionGetListProperties } from '../../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeGetListContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionGetListProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionGetManyProperties } from '../../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeGetManyContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionGetManyProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberFunctionBeforeCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberFunctionBeforeDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberFunctionBeforeUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberFunctionExecutionContextData } from '../../../../../../interface/class/api/subscriber/function-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberFunctionExecutionContext } from '../../../../../../interface/class/api/subscriber/function-execution-context.interface';
|
|
4
|
+
import type { TApiFunctionUpdateProperties } from '../../../../../decorator/api/function/index';
|
|
5
|
+
export type TApiSubscriberFunctionBeforeUpdateContext<E extends IApiBaseEntity> = IApiSubscriberFunctionExecutionContext<E, TApiFunctionUpdateProperties<E>, IApiSubscriberFunctionExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterCreateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterDeleteContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterGetContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterGetListContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, Array<E>, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterGetManyContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, Array<E>, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberRouteAfterCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberRouteAfterDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberRouteAfterUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteAfterUpdateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
import type { DeepPartial } from "typeorm";
|
|
5
|
+
export type TApiSubscriberRouteBeforeCreateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, {
|
|
6
|
+
body: DeepPartial<E>;
|
|
7
|
+
}, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeDeleteContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeGetContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeGetListContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
export type TApiSubscriberRouteBeforeGetManyContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextData<E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { type TApiSubscriberRouteBeforeCreateContext } from './create-context.type';
|
|
2
|
+
export { type TApiSubscriberRouteBeforeDeleteContext } from './delete-context.type';
|
|
3
|
+
export type * from './get/index';
|
|
4
|
+
export { type TApiSubscriberRouteBeforeUpdateContext } from './update-context.type';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
|
|
2
|
+
import type { IApiSubscriberRouteExecutionContextData } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
|
|
3
|
+
import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
|
|
4
|
+
import type { DeepPartial } from "typeorm";
|
|
5
|
+
export type TApiSubscriberRouteBeforeUpdateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, {
|
|
6
|
+
body: DeepPartial<E>;
|
|
7
|
+
}, IApiSubscriberRouteExecutionContextData<E>>;
|