import { AxiosResponse } from "axios"; import { RequestDefinition, RequestData, ImplementsRequestInterface } from "../requestBase"; import { BaseClient } from "../../clients/clientBase"; import { Operation } from "../../viewmodels/webpage/collection"; interface IOperationRequests { getOperations: RequestDefinition; getOperationById: RequestDefinition<{ id: string }, void, Operation>; createOperation: RequestDefinition, string>; updateOperation: RequestDefinition<{ id: string }, Partial, void>; deleteOperation: RequestDefinition<{ id: string }, void, void>; } @ImplementsRequestInterface() export default abstract class OperationRequests { static async getOperations({ http }: BaseClient): Promise> { return await http.get("/operations"); } static async getOperationById({ http }: BaseClient, p: RequestData<{ id: string }, void>): Promise> { return await http.get(`/operations/${p.params.id}`); } static async createOperation({ http }: BaseClient, p: RequestData>): Promise> { return await http.post("/operations", p.body); } static async updateOperation({ http }: BaseClient, p: RequestData<{ id: string }, Partial>): Promise> { return await http.post(`/operations/${p.params.id}`, p.body); } static async deleteOperation({ http }: BaseClient, p: RequestData<{ id: string }, void>): Promise> { return await http.post(`/operations/${p.params.id}`); } }