83 lines
1.9 KiB
TypeScript
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'); |