add now features
This commit is contained in:
64
frontend/src/services/atemschutz.ts
Normal file
64
frontend/src/services/atemschutz.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
import { api } from './api';
|
||||
import type {
|
||||
AtemschutzUebersicht,
|
||||
AtemschutzTraeger,
|
||||
AtemschutzStats,
|
||||
CreateAtemschutzPayload,
|
||||
UpdateAtemschutzPayload,
|
||||
} from '../types/atemschutz.types';
|
||||
|
||||
async function unwrap<T>(
|
||||
promise: ReturnType<typeof api.get<{ success: boolean; data: T }>>
|
||||
): Promise<T> {
|
||||
const response = await promise;
|
||||
if (response.data?.data === undefined || response.data?.data === null) {
|
||||
throw new Error('Invalid API response');
|
||||
}
|
||||
return response.data.data;
|
||||
}
|
||||
|
||||
export const atemschutzApi = {
|
||||
async getAll(): Promise<AtemschutzUebersicht[]> {
|
||||
return unwrap(
|
||||
api.get<{ success: boolean; data: AtemschutzUebersicht[] }>('/api/atemschutz')
|
||||
);
|
||||
},
|
||||
|
||||
async getById(id: string): Promise<AtemschutzUebersicht> {
|
||||
return unwrap(
|
||||
api.get<{ success: boolean; data: AtemschutzUebersicht }>(`/api/atemschutz/${id}`)
|
||||
);
|
||||
},
|
||||
|
||||
async getStats(): Promise<AtemschutzStats> {
|
||||
return unwrap(
|
||||
api.get<{ success: boolean; data: AtemschutzStats }>('/api/atemschutz/stats')
|
||||
);
|
||||
},
|
||||
|
||||
async create(payload: CreateAtemschutzPayload): Promise<AtemschutzTraeger> {
|
||||
const response = await api.post<{ success: boolean; data: AtemschutzTraeger }>(
|
||||
'/api/atemschutz',
|
||||
payload
|
||||
);
|
||||
if (response.data?.data === undefined || response.data?.data === null) {
|
||||
throw new Error('Invalid API response');
|
||||
}
|
||||
return response.data.data;
|
||||
},
|
||||
|
||||
async update(id: string, payload: UpdateAtemschutzPayload): Promise<AtemschutzTraeger> {
|
||||
const response = await api.patch<{ success: boolean; data: AtemschutzTraeger }>(
|
||||
`/api/atemschutz/${id}`,
|
||||
payload
|
||||
);
|
||||
if (response.data?.data === undefined || response.data?.data === null) {
|
||||
throw new Error('Invalid API response');
|
||||
}
|
||||
return response.data.data;
|
||||
},
|
||||
|
||||
async delete(id: string): Promise<void> {
|
||||
await api.delete(`/api/atemschutz/${id}`);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user