Presupuestador_web/client/src/lib/hooks/useDataSource/DataSource.ts

115 lines
2.7 KiB
TypeScript
Raw Normal View History

2024-06-06 11:05:54 +00:00
import { IListResponse_DTO } from "@shared/contexts";
2024-08-19 09:28:25 +00:00
import { AxiosHeaderValue, ResponseType } from "axios";
2024-06-06 11:05:54 +00:00
export interface IPaginationDataProviderParam {
pageIndex: number;
pageSize: number;
}
export interface ISortItemDataProviderParam {
order: string;
field: string;
}
export interface IFilterItemDataProviderParam {
field: string;
operator?: string;
value?: string;
}
export interface IGetListDataProviderParams {
resource: string;
quickSearchTerm?: string[];
2024-06-06 11:05:54 +00:00
pagination?: IPaginationDataProviderParam;
sort?: ISortItemDataProviderParam[];
filters?: IFilterItemDataProviderParam[];
}
export interface IGetOneDataProviderParams {
resource: string;
id: string;
}
export interface ISaveOneDataProviderParams<T> {
resource: string;
data: T;
id: string;
}
export interface ICreateOneDataProviderParams<T> {
resource: string;
data: T;
}
export interface IUpdateOneDataProviderParams<T> {
resource: string;
data: T;
id: string;
}
export interface IRemoveOneDataProviderParams {
resource: string;
id: string;
}
2024-08-20 21:40:37 +00:00
export interface IDownloadPDFDataProviderParams {
url: string;
config?: {
[key: string]: unknown;
};
}
export interface IDownloadPDFDataProviderResponse {
filename: string;
filedata: Blob;
}
2024-09-23 15:56:15 +00:00
export interface IUploadFileDataProviderParam {
path: string;
//resource: string;
//id: string;
file: File;
key: string;
onUploadProgress?: any;
}
2024-08-18 20:39:06 +00:00
export interface ICustomDataProviderParam {
2024-10-01 10:21:08 +00:00
url?: string;
path?: string;
2024-08-18 20:39:06 +00:00
method: "get" | "delete" | "head" | "options" | "post" | "put" | "patch";
2024-08-19 16:13:07 +00:00
signal?: AbortSignal;
2024-08-19 09:28:25 +00:00
responseType?: ResponseType;
2024-08-18 20:39:06 +00:00
headers?: {
[key: string]: AxiosHeaderValue;
};
2024-08-19 09:28:25 +00:00
[key: string]: unknown;
2024-08-18 20:39:06 +00:00
}
2024-06-06 11:05:54 +00:00
export interface IDataSource {
name: () => string;
getList: <R>(params: IGetListDataProviderParams) => Promise<IListResponse_DTO<R>>;
getOne: <R>(params: IGetOneDataProviderParams) => Promise<R>;
//saveOne: <P, R>(params: ISaveOneDataProviderParams<P>) => Promise<R>;
createOne: <P, R>(params: ICreateOneDataProviderParams<P>) => Promise<R>;
updateOne: <P, R>(params: IUpdateOneDataProviderParams<P>) => Promise<R>;
removeOne: (params: IRemoveOneDataProviderParams) => Promise<void>;
2024-08-20 21:40:37 +00:00
downloadPDF: (
params: IDownloadPDFDataProviderParams
) => Promise<IDownloadPDFDataProviderResponse>;
2024-09-23 15:56:15 +00:00
uploadFile: <R>(params: IUploadFileDataProviderParam) => Promise<R>;
2024-08-18 20:39:06 +00:00
custom: <R>(params: ICustomDataProviderParam) => Promise<R>;
2024-06-06 11:05:54 +00:00
2024-08-18 20:39:06 +00:00
getApiUrl: () => string;
2024-08-20 21:40:37 +00:00
getApiAuthorization: () => string;
2024-06-06 11:05:54 +00:00
//create: () => any;
//createMany: () => any;
//removeMany: () => any;
//getMany: () => any;
//update: () => any;
//updateMany: () => any;
//upload: () => any;
//custom: () => any;
//getApiUrl: () => string;
}