xpeditis2.0/apps/frontend/src/lib/api/ports.ts
2026-06-12 11:33:37 +02:00

64 lines
1.3 KiB
TypeScript

// API Base URL
const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000';
export interface PortCoordinates {
latitude: number;
longitude: number;
}
export interface Port {
id: string;
code: string;
name: string;
city: string;
country: string;
countryName: string;
coordinates: PortCoordinates;
timezone?: string;
isActive: boolean;
displayName: string;
}
export interface PortSearchParams {
query: string;
limit?: number;
countryFilter?: string;
}
export interface PortSearchResponse {
ports: Port[];
totalMatches: number;
}
/**
* Search ports by query (autocomplete)
*/
export async function searchPorts(params: PortSearchParams): Promise<PortSearchResponse> {
const queryParams = new URLSearchParams({
query: params.query,
});
if (params.limit) {
queryParams.append('limit', params.limit.toString());
}
if (params.countryFilter) {
queryParams.append('countryFilter', params.countryFilter);
}
const response = await fetch(`${API_BASE_URL}/api/v1/ports/search?${queryParams.toString()}`, {
method: 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
},
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.message || 'Failed to search ports');
}
return response.json();
}