import { getConfigValue } from '@brojs/cli'; enum ArmEndpoints { ORDERS = '/arm/orders', MASTERS = '/arm/masters', } const armService = () => { const endpoint = getConfigValue('dry-wash.api'); const fetchOrders = async ({ date }: { date: Date }) => { const response = await fetch(`${endpoint}${ArmEndpoints.ORDERS}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ date }), }); if (!response.ok) { throw new Error(`Failed to fetch orders: ${response.status}`); } return await response.json(); }; const fetchMasters = async () => { const response = await fetch(`${endpoint}${ArmEndpoints.MASTERS}`); if (!response.ok) { throw new Error(`Failed to fetch masters: ${response.status}`); } return await response.json(); }; const addMaster = async ({ name, phone, }: { name: string; phone: string; }) => { const response = await fetch(`${endpoint}${ArmEndpoints.MASTERS}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ name, phone }), }); if (!response.ok) { throw new Error(`Failed to fetch masters: ${response.status}`); } return await response.json(); }; const deleteMaster = async ({ id }: { id: string }) => { const response = await fetch(`${endpoint}${ArmEndpoints.MASTERS}/${id}`, { method: 'DELETE', }); if (!response.ok) { throw new Error(`Failed to fetch masters: ${response.status}`); } return await response.json(); }; const updateMaster = async ({ id, name, phone, }: { id: string; name?: string; phone?: string; }) => { const body = JSON.stringify({ name, phone }); const response = await fetch(`${endpoint}${ArmEndpoints.MASTERS}/${id}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json', }, body, }); if (!response.ok) { throw new Error(`Failed to fetch update masters: ${response.status}`); } return await response.json(); }; return { fetchOrders, fetchMasters, addMaster, deleteMaster, updateMaster }; }; export { armService, ArmEndpoints };