import { AxiosResponse } from "axios"; import { RequestDefinition, RequestData, ImplementsRequestInterface } from "../requestBase"; import { BaseClient } from "../../clients/clientBase"; import { Article } from "../../viewmodels/webpage/collection"; interface IArticleRequests { getArticles: RequestDefinition; getArticleById: RequestDefinition<{ id: string }, void, Article>; createArticle: RequestDefinition, string>; updateArticle: RequestDefinition<{ id: string }, Partial
, void>; deleteArticle: RequestDefinition<{ id: string }, void, void>; } @ImplementsRequestInterface() export default abstract class ArticleRequests { static async getArticles({ http }: BaseClient): Promise> { return await http.get("/articles"); } static async getArticleById({ http }: BaseClient, p: RequestData<{ id: string }, void>): Promise> { return await http.get(`/articles/${p.params.id}`); } static async createArticle({ http }: BaseClient, p: RequestData>): Promise> { return await http.post("/articles", p.body); } static async updateArticle({ http }: BaseClient, p: RequestData<{ id: string }, Partial
>): Promise> { return await http.post(`/articles/${p.params.id}`, p.body); } static async deleteArticle({ http }: BaseClient, p: RequestData<{ id: string }, void>): Promise> { return await http.post(`/articles/${p.params.id}`); } }