From 554faefe4a119dfaff3391aadeb2c4f618242f55 Mon Sep 17 00:00:00 2001 From: Tola Leng Date: Fri, 6 Jun 2025 18:53:12 +0800 Subject: [PATCH] Add delete and edit functionality to Operational Pages --- .../src/services/operationalPageService.ts | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 application/src/services/operationalPageService.ts diff --git a/application/src/services/operationalPageService.ts b/application/src/services/operationalPageService.ts new file mode 100644 index 0000000..28d905b --- /dev/null +++ b/application/src/services/operationalPageService.ts @@ -0,0 +1,146 @@ + +import { pb, getCurrentEndpoint } from '@/lib/pocketbase'; +import { OperationalPageRecord } from '@/types/operational.types'; + +export const operationalPageService = { + async getOperationalPages(): Promise { + try { + const authToken = pb.authStore.token; + const headers: Record = { + 'Content-Type': 'application/json', + }; + + if (authToken) { + headers['Authorization'] = `Bearer ${authToken}`; + } + + const baseUrl = getCurrentEndpoint(); + const response = await fetch(`${baseUrl}/api/collections/operational_page/records`, { + method: 'GET', + headers, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const result = await response.json(); + return result.items || []; + } catch (error) { + console.error('Error fetching operational pages:', error); + throw error; + } + }, + + async getOperationalPage(id: string): Promise { + try { + const authToken = pb.authStore.token; + const headers: Record = { + 'Content-Type': 'application/json', + }; + + if (authToken) { + headers['Authorization'] = `Bearer ${authToken}`; + } + + const baseUrl = getCurrentEndpoint(); + const response = await fetch(`${baseUrl}/api/collections/operational_page/records/${id}`, { + method: 'GET', + headers, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + return await response.json(); + } catch (error) { + console.error('Error fetching operational page:', error); + throw error; + } + }, + + async updateOperationalPage(id: string, data: Partial): Promise { + try { + const authToken = pb.authStore.token; + const headers: Record = { + 'Content-Type': 'application/json', + }; + + if (authToken) { + headers['Authorization'] = `Bearer ${authToken}`; + } + + const baseUrl = getCurrentEndpoint(); + const response = await fetch(`${baseUrl}/api/collections/operational_page/records/${id}`, { + method: 'PATCH', + headers, + body: JSON.stringify(data), + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + return await response.json(); + } catch (error) { + console.error('Error updating operational page:', error); + throw error; + } + }, + + async createOperationalPage(data: Omit): Promise { + try { + const authToken = pb.authStore.token; + const headers: Record = { + 'Content-Type': 'application/json', + }; + + if (authToken) { + headers['Authorization'] = `Bearer ${authToken}`; + } + + const baseUrl = getCurrentEndpoint(); + const response = await fetch(`${baseUrl}/api/collections/operational_page/records`, { + method: 'POST', + headers, + body: JSON.stringify(data), + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + return await response.json(); + } catch (error) { + console.error('Error creating operational page:', error); + throw error; + } + }, + + async deleteOperationalPage(id: string): Promise { + try { + const authToken = pb.authStore.token; + const headers: Record = { + 'Content-Type': 'application/json', + }; + + if (authToken) { + headers['Authorization'] = `Bearer ${authToken}`; + } + + const baseUrl = getCurrentEndpoint(); + const response = await fetch(`${baseUrl}/api/collections/operational_page/records/${id}`, { + method: 'DELETE', + headers, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + } catch (error) { + console.error('Error deleting operational page:', error); + throw error; + } + } +}; \ No newline at end of file