UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

69 lines (68 loc) 2.56 kB
import type { EApiRouteType } from '../../../../enum/decorator/api/route-type.enum'; import type { IApiAuthenticationRequest } from '../../../api-authentication-request.interface'; import type { IApiBaseEntity } from '../../../api-base-entity.interface'; import type { IApiAuthorizationDecision } from '../authorization/index'; import type { IApiControllerProperties } from '../../../decorator/api/controller/properties.interface'; import type { IApiEntity } from '../../../entity/index'; import type { TApiAuthorizationRuleTransformPayload } from '../../../../type/class/api/authorization/rule/transform-payload.type'; /** * Base data container for route subscriber execution context. * Contains route metadata and configuration. * This interface provides typed access to the DATA field in route execution contexts. * @example * ```typescript * async onBeforeCreate( * context: IApiSubscriberRouteExecutionContext< * User, * { body: DeepPartial<User> }, * IApiSubscriberRouteExecutionContextData<User> * > * ): Promise<{ body: DeepPartial<User> }> { * const entityMetadata = context.DATA.entityMetadata; * const method = context.DATA.method; * const methodName = context.DATA.methodName; * * return context.result; * } * ``` */ export interface IApiSubscriberRouteExecutionContextData<E extends IApiBaseEntity> { /** * Entity metadata containing information about entity columns, relations, and configuration. */ entityMetadata: IApiEntity<E>; /** * Route method type (create, update, delete, get, etc.). */ method: EApiRouteType; /** * Controller method name as defined in the controller. */ methodName: string; /** * Controller properties and configuration for the current route. */ properties: IApiControllerProperties<E>; } /** * Extended data container for route subscriber execution context. * Includes request context (headers, IP, authentication) in addition to base route data. */ export interface IApiSubscriberRouteExecutionContextDataExtended<E extends IApiBaseEntity, R = TApiAuthorizationRuleTransformPayload<E>> extends IApiSubscriberRouteExecutionContextData<E> { /** * Authentication request information */ authenticationRequest?: IApiAuthenticationRequest; /** * Authorization decision */ authorizationDecision?: IApiAuthorizationDecision<E, R>; /** * HTTP request headers */ headers: Record<string, string>; /** * Client IP address */ ip: string; }