Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -1,64 +0,0 @@
|
||||
import { Game, CreateGameInput, UpdateGameInput } from '../types/game';
|
||||
import { RomFile, EnrichedGame, ScanResult } from '../types/rom';
|
||||
|
||||
const API_BASE = '/api';
|
||||
|
||||
async function request<T>(endpoint: string, options?: RequestInit): Promise<T> {
|
||||
const response = await fetch(`${API_BASE}${endpoint}`, {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
...options?.headers,
|
||||
},
|
||||
...options,
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`API error: ${response.status} ${response.statusText}`);
|
||||
}
|
||||
|
||||
return response.json();
|
||||
}
|
||||
|
||||
export const api = {
|
||||
games: {
|
||||
list: () => request<Game[]>('/games'),
|
||||
create: (data: CreateGameInput) =>
|
||||
request<Game>('/games', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data),
|
||||
}),
|
||||
update: (id: string, data: UpdateGameInput) =>
|
||||
request<Game>(`/games/${id}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(data),
|
||||
}),
|
||||
delete: (id: string) =>
|
||||
request<void>(`/games/${id}`, {
|
||||
method: 'DELETE',
|
||||
}),
|
||||
},
|
||||
|
||||
roms: {
|
||||
list: () => request<RomFile[]>('/roms'),
|
||||
getById: (id: string) => request<RomFile>(`/roms/${id}`),
|
||||
linkGame: (romId: string, gameId: string) =>
|
||||
request<RomFile>(`/roms/${romId}/game`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify({ gameId }),
|
||||
}),
|
||||
delete: (id: string) => request<void>(`/roms/${id}`, { method: 'DELETE' }),
|
||||
},
|
||||
|
||||
metadata: {
|
||||
search: (query: string) =>
|
||||
request<EnrichedGame[]>('/metadata/search?q=' + encodeURIComponent(query)),
|
||||
},
|
||||
|
||||
import: {
|
||||
scan: (dir: string) =>
|
||||
request<ScanResult>('/import/scan', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ dir }),
|
||||
}),
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user