Very minimal MVP

This commit is contained in:
Eric Gullickson
2025-08-23 09:54:22 -05:00
parent d60c3ec00e
commit 6683f1eeff
12 changed files with 661 additions and 13 deletions

View File

@@ -3,7 +3,18 @@
*/
import { apiClient } from '../../../core/api/client';
import { Vehicle, CreateVehicleRequest, UpdateVehicleRequest } from '../types/vehicles.types';
import axios from 'axios';
import { Vehicle, CreateVehicleRequest, UpdateVehicleRequest, DropdownOption } from '../types/vehicles.types';
// Unauthenticated client for dropdown data
const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';
const dropdownClient = axios.create({
baseURL: API_BASE_URL,
timeout: 10000,
headers: {
'Content-Type': 'application/json',
},
});
export const vehiclesApi = {
getAll: async (): Promise<Vehicle[]> => {
@@ -29,4 +40,30 @@ export const vehiclesApi = {
delete: async (id: string): Promise<void> => {
await apiClient.delete(`/vehicles/${id}`);
},
// Dropdown API methods (unauthenticated)
getMakes: async (): Promise<DropdownOption[]> => {
const response = await dropdownClient.get('/vehicles/dropdown/makes');
return response.data;
},
getModels: async (make: string): Promise<DropdownOption[]> => {
const response = await dropdownClient.get(`/vehicles/dropdown/models/${encodeURIComponent(make)}`);
return response.data;
},
getTransmissions: async (): Promise<DropdownOption[]> => {
const response = await dropdownClient.get('/vehicles/dropdown/transmissions');
return response.data;
},
getEngines: async (): Promise<DropdownOption[]> => {
const response = await dropdownClient.get('/vehicles/dropdown/engines');
return response.data;
},
getTrims: async (): Promise<DropdownOption[]> => {
const response = await dropdownClient.get('/vehicles/dropdown/trims');
return response.data;
},
};