42 lines
2.1 KiB
TypeScript
42 lines
2.1 KiB
TypeScript
|
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);
|
||
|
}
|
||
|
}
|