Files
tvone/lib/categories.api.ts
T

66 lines
3.5 KiB
TypeScript
Raw Normal View History

2026-04-18 11:28:23 +01:00
const API = "http://localhost:3001/categories";
export interface Category {
id: string;
name: string;
slug: string;
parentId?: string | null;
children?: Category[];
}
2026-04-19 02:33:07 +01:00
//var token = 'eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJzSnBBLWUtcTEyc3ZVUlpLLUpCbU9lVzQxVDhIcGRKQnlLYlVkbHQxVDNZIn0.eyJleHAiOjE3NzY1NjA0MzIsImlhdCI6MTc3NjU2MDEzMiwiYXV0aF90aW1lIjoxNzc2NTYwMTMyLCJqdGkiOiI4ZTUzYmY3YS0wNDMzLTQ4MzQtOGE4NS02NjQ4YTMyOTliYWIiLCJpc3MiOiJodHRwczovL2tleWNsb2FrLnBldGVybWFxdWlyYW4ueHl6L3JlYWxtcy90dm9uZSIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJiY2RkYTYwOS00OThhLTQxNzgtYTEwMy04N2QzN2IxN2U1YzMiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJ0dm9uZS13ZWIiLCJzZXNzaW9uX3N0YXRlIjoiMWVlZDBhOTMtOGFlNi00ZDBlLTg0MjItMGJmYTA3ZmViYTBiIiwiYWNyIjoiMSIsImFsbG93ZWQtb3JpZ2lucyI6WyJodHRwczovL3R2b25lLnBldGVybWFxdWlyYW4ueHl6IiwiaHR0cDovL2xvY2FsaG9zdDozMDAwIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIiwiZGVmYXVsdC1yb2xlcy10dm9uZSJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib3BlbmlkIGVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxZWVkMGE5My04YWU2LTRkMGUtODQyMi0wYmZhMDdmZWJhMGIiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6IlBldGVyIE1hcXVpcmFuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoicGV0ZXJtYXF1aXJhbjI5QGdtYWlsLmNvbSIsImdpdmVuX25hbWUiOiJQZXRlciIsImZhbWlseV9uYW1lIjoiTWFxdWlyYW4iLCJwaWN0dXJlIjoiaHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EvQUNnOG9jTG5QUmpKbllhZ2tDT0VIbVRGY1IyZVVOaWNSLU45bG5QQkZuV0RSa0hnVF9JeHpocz1zOTYtYyIsImVtYWlsIjoicGV0ZXJtYXF1aXJhbjI5QGdtYWlsLmNvbSJ9.K9uo2g2nK7VjkcCfVyex39iCAAV32ASTSsF0jicUAWlupv8IwYOv4wToyGyetC7yfAqpxaPqeHIOd_QJ3V60jQeJu10J_P78BHw01oe1ONczmAMm3Lt175-i70m8lOmPFXhVPbzGCLrUxWtOC1npS1to1y_QvtMmU11owcZvjy7InV4KpOUUmJkp2OMiSEpDV7tiVNBm7YtoXHhCeTN3-jpipV16yhBJuMfdyVhqK0gYT_z6bnbkvND6F1XG2D-A0cYwuc2NYeSwQT-F3Gxyw09JioZTEN_mn6sMRjy2zgm4oz0Owc1Qv6Exi2my32734e8Y7o-0RcFZpUFfkegdFA';
2026-04-18 11:28:23 +01:00
export async function getCategoriesTree(): Promise<Category[]> {
2026-04-19 02:33:07 +01:00
const res = await fetch(`${API}/`, {credentials: "include", headers: {
//Authorization: "Bearer "+token,
}});
2026-04-18 11:28:23 +01:00
const data = await res.json();
return Array.isArray(data) ? data : data?.data ?? [];
}
export async function getCategoriesFlat(): Promise<Category[]> {
2026-04-19 02:33:07 +01:00
const res = await fetch(API, {credentials: "include",headers: {
// Authorization: "Bearer "+token,
}});
2026-04-18 11:28:23 +01:00
const data = await res.json();
return Array.isArray(data) ? data : [];
}
export async function createCategory(payload: Partial<Category>) {
return fetch(API, {
method: "POST",
headers: { "Content-Type": "application/json" },
2026-04-19 02:33:07 +01:00
credentials: "include",
2026-04-18 11:28:23 +01:00
body: JSON.stringify(payload),
});
}
export async function updateCategory(id: string, payload: Partial<Category>) {
return fetch(`${API}/${id}`, {
method: "PATCH",
headers: { "Content-Type": "application/json" },
2026-04-19 02:33:07 +01:00
credentials: "include",
2026-04-18 11:28:23 +01:00
body: JSON.stringify(payload),
});
}
export async function deleteCategory(id: string) {
2026-04-19 02:33:07 +01:00
return fetch(`${API}/${id}`, { method: "DELETE", credentials: "include", });
2026-04-18 11:28:23 +01:00
}
export async function getTree(): Promise<Category[]> {
2026-04-19 02:33:07 +01:00
const res = await fetch(`${API}/`, {credentials: "include",headers: {
// Authorization: "Bearer "+token,
}});
2026-04-18 11:28:23 +01:00
const data = await res.json();
return Array.isArray(data) ? data : data?.data ?? [];
}
export async function getFlat(): Promise<Category[]> {
2026-04-19 02:33:07 +01:00
const res = await fetch(API, {credentials: "include",headers: {
// Authorization: "Bearer "+token,
}});
2026-04-18 11:28:23 +01:00
const data = await res.json();
return Array.isArray(data) ? data : [];
}