83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
import client from "@/honoClient";
|
|
import fetchRPC from "@/utils/fetchRPC";
|
|
import { queryOptions } from "@tanstack/react-query";
|
|
import { InferRequestType } from "hono";
|
|
|
|
export const aspectQueryOptions = (page: number, limit: number, q?: string) =>
|
|
queryOptions({
|
|
queryKey: ["management-aspect", { page, limit, q }],
|
|
queryFn: async () => {
|
|
const response = await fetchRPC(
|
|
client["management-aspect"].$get({
|
|
query: {
|
|
limit: String(limit),
|
|
page: String(page),
|
|
q,
|
|
},
|
|
})
|
|
);
|
|
|
|
return response;
|
|
},
|
|
});
|
|
|
|
export const getAspectByIdQueryOptions = (aspectId: string | undefined) =>
|
|
queryOptions({
|
|
queryKey: ["management-aspect", aspectId],
|
|
queryFn: () =>
|
|
fetchRPC(
|
|
client["management-aspect"][":id"].$get({
|
|
param: {
|
|
id: aspectId!,
|
|
},
|
|
query: {},
|
|
})
|
|
),
|
|
enabled: Boolean(aspectId),
|
|
});
|
|
|
|
export const createAspect = async (
|
|
json: { name: string; subAspects?: string }
|
|
) => {
|
|
try {
|
|
return await fetchRPC(
|
|
client["management-aspect"].$post({
|
|
json,
|
|
})
|
|
);
|
|
} catch (error) {
|
|
console.error("Error creating aspect:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
export const updateAspect = async (
|
|
form: { id: string; name: string; subAspects?: string }
|
|
) => {
|
|
try {
|
|
const payload = {
|
|
name: form.name,
|
|
subAspects: form.subAspects
|
|
? JSON.parse(form.subAspects)
|
|
: [],
|
|
};
|
|
|
|
return await fetchRPC(
|
|
client["management-aspect"][":id"].$patch({
|
|
param: {
|
|
id: form.id,
|
|
},
|
|
json: payload,
|
|
})
|
|
);
|
|
} catch (error) {
|
|
console.error("Error updating aspect:", error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
export const deleteAspect = async (id: string) => {
|
|
return await fetchRPC(
|
|
(client["management-aspect"] as { [key: string]: any })[id].$delete()
|
|
);
|
|
}; |