From 9a5bddef6a0e960a823cb4b78e220eeb945e13c2 Mon Sep 17 00:00:00 2001 From: "fredy.siswanto" Date: Tue, 11 Mar 2025 00:21:09 +0700 Subject: [PATCH] feat: add delete subscription plan and delete tags APIs with response validation --- app/apis/admin/delete-subscribe-plan.ts | 29 ++++++++++++++++++++++++ app/apis/admin/delete-tags.ts | 30 +++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 app/apis/admin/delete-subscribe-plan.ts create mode 100644 app/apis/admin/delete-tags.ts diff --git a/app/apis/admin/delete-subscribe-plan.ts b/app/apis/admin/delete-subscribe-plan.ts new file mode 100644 index 0000000..449e1bf --- /dev/null +++ b/app/apis/admin/delete-subscribe-plan.ts @@ -0,0 +1,29 @@ +import { z } from 'zod' + +import { HttpServer, type THttpServer } from '~/libs/http-server' +import type { TSubscribePlanSchema } from '~/pages/form-subscriptions-plan' + +const subscribePlanResponseSchema = z.object({ + data: z.object({ + Message: z.string(), + }), +}) + +type TTSubscribePlanId = Pick +type TParameters = { + payload: TTSubscribePlanId +} & THttpServer + +export const deleteSubscribePlanRequest = async (parameters: TParameters) => { + const { payload, ...restParameters } = parameters + const { id } = payload + try { + const { data } = await HttpServer(restParameters).delete( + `/api/subscribe-plan/${id}/delete`, + ) + return subscribePlanResponseSchema.parse(data) + } catch (error) { + // eslint-disable-next-line unicorn/no-useless-promise-resolve-reject + return Promise.reject(error) + } +} diff --git a/app/apis/admin/delete-tags.ts b/app/apis/admin/delete-tags.ts new file mode 100644 index 0000000..916d8b1 --- /dev/null +++ b/app/apis/admin/delete-tags.ts @@ -0,0 +1,30 @@ +import { z } from 'zod' + +import { HttpServer, type THttpServer } from '~/libs/http-server' +import type { TTagSchema } from '~/pages/form-tag' + +const deleteTagsResponseSchema = z.object({ + data: z.object({ + Message: z.string(), + }), +}) + +type TTagsId = Pick +type TParameters = { + payload: TTagsId +} & THttpServer + +export type TDeleteTagsSchema = z.infer +export const deleteTagsRequest = async (parameters: TParameters) => { + const { payload, ...restParameters } = parameters + const { id } = payload + try { + const { data } = await HttpServer(restParameters).delete( + `/api/tag/${id}/delete`, + ) + return deleteTagsResponseSchema.parse(data) + } catch (error) { + // eslint-disable-next-line unicorn/no-useless-promise-resolve-reject + return Promise.reject(error) + } +}