ff-admin-webapi-client/src/requests/admin/queryRequests.ts

42 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-02-05 14:29:09 +01:00
import { AxiosResponse } from "axios";
import { RequestDefinition, RequestData, ImplementsRequestInterface } from "../requestBase";
import { CreateQueryViewModel, QueryExecuteResult, QueryViewModel, UpdateQueryViewModel } from "../../viewmodels/admin/query.models";
import { DynamicQueryStructure } from "../../types/admin/dynamicQueries";
import { BaseClient } from "../../clients/clientBase";
interface IQueryRequests {
getQueries: RequestDefinition<void, void, QueryViewModel[]>;
getQueryById: RequestDefinition<{ id: number }, void, QueryViewModel>;
createQuery: RequestDefinition<void, CreateQueryViewModel, number>;
updateQuery: RequestDefinition<{ id: number }, UpdateQueryViewModel, void>;
deleteQuery: RequestDefinition<{ id: number }, void, void>;
executeQuery: RequestDefinition<void, DynamicQueryStructure | string, QueryExecuteResult>;
}
@ImplementsRequestInterface<IQueryRequests>()
export default abstract class QueryDataRequests {
static async getQueries({ http }: BaseClient): Promise<AxiosResponse<QueryViewModel[], any>> {
return await http.get("/admin/award");
}
static async getQueryById({ http }: BaseClient, p: RequestData<{ id: number }, void>): Promise<AxiosResponse<QueryViewModel, any>> {
return await http.get(`/admin/award/${p.params.id}`);
}
static async createQuery({ http }: BaseClient, p: RequestData<void, CreateQueryViewModel>): Promise<AxiosResponse<number, any>> {
return await http.post("/admin/award", p.body);
}
static async updateQuery({ http }: BaseClient, p: RequestData<{ id: number }, UpdateQueryViewModel>): Promise<AxiosResponse<void, any>> {
return await http.post(`/admin/award/${p.params.id}`, p.body);
}
static async deleteQuery({ http }: BaseClient, p: RequestData<{ id: number }, void>): Promise<AxiosResponse<void, any>> {
return await http.post(`/admin/award/${p.params.id}`);
}
static async executeQuery(
{ http }: BaseClient,
p: RequestData<void, DynamicQueryStructure | string>
): Promise<AxiosResponse<QueryExecuteResult, any>> {
return await http.post(`/admin/query`, p.body);
}
}