kea-react
Version:
Componentes comunes de react
43 lines (42 loc) • 1.66 kB
TypeScript
import { UrlParameters } from "./url";
export declare type HttpVerb = "GET" | "POST" | "PUT" | "DELETE";
export interface RpcMethod {
<TParams extends UrlParameters<keyof TParams>>(params: TParams, body?: any): Promise<any>;
}
export interface RpcController {
(method: string, verb?: HttpVerb): RpcMethod;
}
export interface RpcBase {
(controller: string): RpcController;
}
export interface RpcService {
(baseUrl: string): RpcBase;
}
/**Crea un objecto para consumir un servicio RPC, en donde las peticiones se realizan en la forma:
* base/controller/method?params=...
*/
export declare const rpcService: RpcService;
export interface CrudService<T> {
/**Obtiene una entidad */
get(id: number): Promise<T>;
/**Obtiene todas las entidades */
query(): Promise<T[]>;
/**Agrega una entidad. Devuelve el ID de la entidad */
add(entity: T): Promise<number>;
/**Actualiza una entidad. Devuelve el ID de la entidad */
update(entity: T): Promise<number>;
/**Borra una entidad */
delete(id: number): Promise<void>;
}
/**
* Devuelve un crud service para un servicio RPC-POST con la siguiente firma:
* Get(id : number) => T;
* Query() => T[];
* Add(entity: T) => number;
* Update(entity: T) => number;
* Delete(id: number) => void;
*
* Si su servicio no conforma con esta forma es mejor usar directamente los metodos rpcService.
* Si el resultado del Update del controllador no devuelve un numero se devuelve el valor de la propiedad IdRegistro del parametro de la función
*/
export declare function rpcCrudService<T>(controller: RpcController): CrudService<T>;