Very minimal MVP
This commit is contained in:
@@ -140,6 +140,81 @@ export class VehiclesService {
|
||||
await cacheService.del(cacheKey);
|
||||
}
|
||||
|
||||
async getDropdownMakes(): Promise<{ id: number; name: string }[]> {
|
||||
try {
|
||||
logger.info('Getting dropdown makes');
|
||||
const makes = await vpicClient.getAllMakes();
|
||||
|
||||
return makes.map(make => ({
|
||||
id: make.Make_ID,
|
||||
name: make.Make_Name
|
||||
}));
|
||||
} catch (error) {
|
||||
logger.error('Failed to get dropdown makes', { error });
|
||||
throw new Error('Failed to load makes');
|
||||
}
|
||||
}
|
||||
|
||||
async getDropdownModels(make: string): Promise<{ id: number; name: string }[]> {
|
||||
try {
|
||||
logger.info('Getting dropdown models', { make });
|
||||
const models = await vpicClient.getModelsForMake(make);
|
||||
|
||||
return models.map(model => ({
|
||||
id: model.Model_ID,
|
||||
name: model.Model_Name
|
||||
}));
|
||||
} catch (error) {
|
||||
logger.error('Failed to get dropdown models', { make, error });
|
||||
throw new Error('Failed to load models');
|
||||
}
|
||||
}
|
||||
|
||||
async getDropdownTransmissions(): Promise<{ id: number; name: string }[]> {
|
||||
try {
|
||||
logger.info('Getting dropdown transmissions');
|
||||
const transmissions = await vpicClient.getTransmissionTypes();
|
||||
|
||||
return transmissions.map(transmission => ({
|
||||
id: transmission.Id,
|
||||
name: transmission.Name
|
||||
}));
|
||||
} catch (error) {
|
||||
logger.error('Failed to get dropdown transmissions', { error });
|
||||
throw new Error('Failed to load transmissions');
|
||||
}
|
||||
}
|
||||
|
||||
async getDropdownEngines(): Promise<{ id: number; name: string }[]> {
|
||||
try {
|
||||
logger.info('Getting dropdown engines');
|
||||
const engines = await vpicClient.getEngineConfigurations();
|
||||
|
||||
return engines.map(engine => ({
|
||||
id: engine.Id,
|
||||
name: engine.Name
|
||||
}));
|
||||
} catch (error) {
|
||||
logger.error('Failed to get dropdown engines', { error });
|
||||
throw new Error('Failed to load engines');
|
||||
}
|
||||
}
|
||||
|
||||
async getDropdownTrims(): Promise<{ id: number; name: string }[]> {
|
||||
try {
|
||||
logger.info('Getting dropdown trims');
|
||||
const trims = await vpicClient.getTrimLevels();
|
||||
|
||||
return trims.map(trim => ({
|
||||
id: trim.Id,
|
||||
name: trim.Name
|
||||
}));
|
||||
} catch (error) {
|
||||
logger.error('Failed to get dropdown trims', { error });
|
||||
throw new Error('Failed to load trims');
|
||||
}
|
||||
}
|
||||
|
||||
private toResponse(vehicle: Vehicle): VehicleResponse {
|
||||
return {
|
||||
id: vehicle.id,
|
||||
@@ -148,6 +223,11 @@ export class VehiclesService {
|
||||
make: vehicle.make,
|
||||
model: vehicle.model,
|
||||
year: vehicle.year,
|
||||
engine: vehicle.engine,
|
||||
transmission: vehicle.transmission,
|
||||
trimLevel: vehicle.trimLevel,
|
||||
driveType: vehicle.driveType,
|
||||
fuelType: vehicle.fuelType,
|
||||
nickname: vehicle.nickname,
|
||||
color: vehicle.color,
|
||||
licensePlate: vehicle.licensePlate,
|
||||
|
||||
@@ -10,6 +10,11 @@ export interface Vehicle {
|
||||
make?: string;
|
||||
model?: string;
|
||||
year?: number;
|
||||
engine?: string;
|
||||
transmission?: string;
|
||||
trimLevel?: string;
|
||||
driveType?: string;
|
||||
fuelType?: string;
|
||||
nickname?: string;
|
||||
color?: string;
|
||||
licensePlate?: string;
|
||||
@@ -22,6 +27,13 @@ export interface Vehicle {
|
||||
|
||||
export interface CreateVehicleRequest {
|
||||
vin: string;
|
||||
make?: string;
|
||||
model?: string;
|
||||
engine?: string;
|
||||
transmission?: string;
|
||||
trimLevel?: string;
|
||||
driveType?: string;
|
||||
fuelType?: string;
|
||||
nickname?: string;
|
||||
color?: string;
|
||||
licensePlate?: string;
|
||||
@@ -29,6 +41,13 @@ export interface CreateVehicleRequest {
|
||||
}
|
||||
|
||||
export interface UpdateVehicleRequest {
|
||||
make?: string;
|
||||
model?: string;
|
||||
engine?: string;
|
||||
transmission?: string;
|
||||
trimLevel?: string;
|
||||
driveType?: string;
|
||||
fuelType?: string;
|
||||
nickname?: string;
|
||||
color?: string;
|
||||
licensePlate?: string;
|
||||
@@ -42,6 +61,11 @@ export interface VehicleResponse {
|
||||
make?: string;
|
||||
model?: string;
|
||||
year?: number;
|
||||
engine?: string;
|
||||
transmission?: string;
|
||||
trimLevel?: string;
|
||||
driveType?: string;
|
||||
fuelType?: string;
|
||||
nickname?: string;
|
||||
color?: string;
|
||||
licensePlate?: string;
|
||||
|
||||
Reference in New Issue
Block a user