calendi/frontend/src/lib/api/endpoints.ts
2025-04-26 05:43:35 +02:00

83 lines
1.9 KiB
TypeScript

import { get, post, put, del } from './client';
// Define your data types here
export type User = {
id: number;
name: string;
email: string;
};
export type CreateUserRequest = {
name: string;
email: string;
password: string;
};
// User endpoints
export const getUser = () => get<User>('/api/user');
// Event types
export type Event = {
id: string;
title: string;
description: string;
start: string;
end: string;
allDay: boolean;
};
export type CreateEventRequest = {
title: string;
description?: string;
start: string;
end: string;
allDay?: boolean;
};
// Event endpoints
export const getEvents = () => get<Event[]>('/api/events');
export const getEvent = (id: string) => get<Event>(`/api/events/${id}`);
export const createEvent = (data: CreateEventRequest) => post<Event>('/api/events', data);
export const updateEvent = (id: string, data: Partial<CreateEventRequest>) => put<Event>(`/api/events/${id}`, data);
export const deleteEvent = (id: string) => del<void>(`/api/events/${id}`);
// Event draft types
export type GenerateDraftRequest = {
input: string;
};
export type EventDraft = {
id: string;
title: string;
description: string;
start: string | null;
end: string | null;
allDay: boolean;
};
// Event draft endpoints
export const generateDraft = (data: GenerateDraftRequest) =>
post<EventDraft>('/api/events/generation', data);
// Calendar types
export type Calendar = {
events: Event[];
};
// Calendar endpoints
export const getCalendar = (start?: string, end?: string) => {
const params = new URLSearchParams();
if (start) params.append('start', start);
if (end) params.append('end', end);
const queryString = params.toString();
return get<Calendar>(`/api/calendar${queryString ? `?${queryString}` : ''}`);
};
// Health check endpoint
export type PingResponse = {
status: string;
timestamp: number;
};
export const ping = () => get<PingResponse>('/api/ping');