@@ -2,6 +2,45 @@ import { AxiosRequestConfig } from 'axios';
22import { ApiResponse } from '../common/api-response' ;
33import { BaseDto } from '../common/base-dto' ;
44import { PagedList } from '../common/paged-list' ;
5+ import { HttpMethod } from '../http/fiscalapi-http-client.interface' ;
6+
7+ /**
8+ * Opciones para ejecutar una operación
9+ * @template TData - Tipo de datos de entrada
10+ */
11+ export type OperationOptions < TData = any > = {
12+ /** Ruta o nombre de la operación */
13+ path : string ;
14+ /** Datos para la operación (opcional) */
15+ data ?: TData ;
16+ /** Parámetros de consulta (opcional) */
17+ queryParams ?: Record < string , string > ;
18+ /** Método HTTP a utilizar */
19+ method ?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' ;
20+ /** Configuración adicional para Axios (opcional) */
21+ config ?: AxiosRequestConfig ;
22+ } ;
23+
24+ /**
25+ * Opciones para ejecutar una petición personalizada
26+ * @template TData - Tipo de datos de entrada
27+ */
28+ export type RequestOptions < TData = any > = {
29+ /** Método HTTP a utilizar */
30+ method : HttpMethod ;
31+ /** Ruta adicional (opcional) */
32+ path ?: string ;
33+ /** ID del recurso (opcional) */
34+ id ?: string ;
35+ /** Datos para la petición (opcional) */
36+ data ?: TData ;
37+ /** Parámetros de consulta (opcional) */
38+ queryParams ?: Record < string , string > ;
39+ /** Configuración adicional para Axios (opcional) */
40+ config ?: AxiosRequestConfig ;
41+ /** Transformador personalizado para la respuesta (opcional) */
42+ responseTransformer ?: < T > ( response : any ) => T ;
43+ } ;
544
645/**
746 * Interfaz base para todos los servicios de FiscalAPI
@@ -53,58 +92,15 @@ export interface IFiscalapiService<T extends BaseDto> {
5392 */
5493 search ( searchParams : Record < string , string > ) : Promise < ApiResponse < PagedList < T > > > ;
5594
56- /**
57- * Ejecuta una acción personalizada en un recurso
58- * @param {string } id - ID del recurso
59- * @param {string } action - Nombre de la acción
60- * @param {TData } [data] - Datos opcionales para la acción
61- * @returns {Promise<ApiResponse<TResult>> } Resultado de la acción
62- * @template TResult - Tipo de resultado esperado
63- * @template TData - Tipo de datos de entrada
64- */
65- executeAction < TResult , TData > (
66- id : string ,
67- action : string ,
68- data ?: TData
69- ) : Promise < ApiResponse < TResult > > ;
7095
71- // /**
72- // * Ejecuta una operación personalizada en el recurso sin necesidad de un ID específico
73- // * @param {string } operation - Nombre de la operación
74- // * @param {TData } data - Datos para la operación
75- // * @returns {Promise<ApiResponse<TResult>> } Resultado de la operación
76- // * @template TResult - Tipo de resultado esperado
77- // * @template TData - Tipo de datos de entrada
78- // */
79- // executeOperation<TResult, TData>(
80- // operation: string,
81- // data: TData,
82- // method: 'POST' | 'PUT' | 'DELETE'
83- // ): Promise<ApiResponse<TResult>>;
84-
8596 /**
86- * Ejecuta una operación personalizada en el recurso sin necesidad de un ID específico
87- * @param {OperationOptions <TData> } options - Opciones para la operación
88- * @returns {Promise<ApiResponse<TResult>> } Resultado de la operación
97+ * Ejecuta una petición HTTP personalizada con máxima flexibilidad
98+ * @param {RequestOptions <TData> } options - Opciones para la petición
99+ * @returns {Promise<ApiResponse<TResult>> } Resultado de la petición
89100 * @template TResult - Tipo de resultado esperado
90101 * @template TData - Tipo de datos de entrada
91102 */
92- executeOperation < TResult , TData = any > ( options : OperationOptions < TData > ) : Promise < ApiResponse < TResult > > ;
93- }
94-
95- /**
96- * Opciones para ejecutar una operación
97- * @template TData - Tipo de datos de entrada
98- */
99- export type OperationOptions < TData = any > = {
100- /** Ruta o nombre de la operación */
101- path : string ;
102- /** Datos para la operación (opcional) */
103- data ?: TData ;
104- /** Parámetros de consulta (opcional) */
105- queryParams ?: Record < string , string > ;
106- /** Método HTTP a utilizar */
107- method ?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' ;
108- /** Configuración adicional para Axios (opcional) */
109- config ?: AxiosRequestConfig ;
110- }
103+ executeRequest < TResult , TData = any > (
104+ options : RequestOptions < TData >
105+ ) : Promise < ApiResponse < TResult > > ;
106+ }
0 commit comments