@alba-cars/common-modules
Version:
A package containing DTOs, validation classes and common modules and interfaces for Alba Cars
588 lines (587 loc) • 24.6 kB
JavaScript
;
// VehicleDTO.ts
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamicVehicleDTO = exports.VehicleUpdateDTO = exports.VehicleFeaturesUpdateDTO = exports.VehicleCreateDTO = exports.VehicleMetaDataDTO = exports.VehicleGetUniqueDTO = exports.VehicleGetDTO = void 0;
const class_validator_1 = require("class-validator");
const class_transformer_1 = require("class-transformer");
const BaseDTO_1 = require("./BaseDTO");
const VehicleMakeDTO_1 = require("./VehicleMakeDTO");
const VehicleModelDTO_1 = require("./VehicleModelDTO");
const VehicleTypeDTO_1 = require("./VehicleTypeDTO");
const VehicleMedia_1 = require("./VehicleMedia");
const VehicleFinanceDTO_1 = require("./VehicleFinanceDTO");
const enums_1 = require("../enums");
class VehicleGetDTO {
constructor(shouldIncludeValidate = true) {
if (shouldIncludeValidate) {
this.validate = (shouldValidate = true) => {
if (!shouldValidate) {
return [];
}
const errors = (0, class_validator_1.validateSync)(this);
return errors
.map((error) => { var _a; return Object.values((_a = error.constraints) !== null && _a !== void 0 ? _a : {}); })
.flat();
};
}
}
static fromPlain(plain) {
return (0, class_transformer_1.plainToClass)(VehicleGetDTO, plain);
}
toPlain() {
return (0, class_transformer_1.instanceToPlain)(this);
}
}
exports.VehicleGetDTO = VehicleGetDTO;
class VehicleGetUniqueDTO {
validate() {
const errors = (0, class_validator_1.validateSync)(this);
return errors.map((error) => { var _a; return Object.values((_a = error.constraints) !== null && _a !== void 0 ? _a : {}); }).flat();
}
static fromPlain(plain) {
return (0, class_transformer_1.plainToClass)(VehicleGetUniqueDTO, plain);
}
static toPlain(entity) {
return (0, class_transformer_1.instanceToPlain)(entity);
}
}
exports.VehicleGetUniqueDTO = VehicleGetUniqueDTO;
class VehicleMetaDataDTO {
validate() {
const errors = (0, class_validator_1.validateSync)(this);
return errors.map((error) => { var _a; return Object.values((_a = error.constraints) !== null && _a !== void 0 ? _a : {}); }).flat();
}
static fromPlain(plain) {
return (0, class_transformer_1.plainToClass)(VehicleMetaDataDTO, plain);
}
static toPlain(entity) {
return (0, class_transformer_1.instanceToPlain)(entity);
}
}
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleMetaDataDTO.prototype, "metaTitle", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleMetaDataDTO.prototype, "metaDescription", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleMetaDataDTO.prototype, "metaKeywords", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleMetaDataDTO.prototype, "vehicleDescription", void 0);
__decorate([
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleMetaDataDTO.prototype, "vehicleId", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsArray)(),
(0, class_validator_1.ValidateNested)({ each: true }),
(0, class_transformer_1.Type)(() => Object) // This transforms each object in the array to the OtherDetailsDTO class
,
__metadata("design:type", Object)
], VehicleMetaDataDTO.prototype, "others", void 0);
exports.VehicleMetaDataDTO = VehicleMetaDataDTO;
class VehicleCreateDTO extends BaseDTO_1.BaseCreateDTO {
validate() {
const errors = (0, class_validator_1.validateSync)(this);
const customErrors = [];
// Validate warranty
if (!this.warrantyYears && !this.warrantyKm) {
customErrors.push("Either warranty years or warranty kilometers must be provided");
}
// Validate service contract
if (!this.serviceContractYears && !this.serviceContractKm) {
customErrors.push("Either service contract years or service contract kilometers must be provided");
}
return [
...errors.map((error) => { var _a; return Object.values((_a = error.constraints) !== null && _a !== void 0 ? _a : {}); }).flat(),
...customErrors,
];
}
static fromPlain(plain) {
return (0, class_transformer_1.plainToClass)(VehicleCreateDTO, plain);
}
static toPlain(entity) {
return (0, class_transformer_1.instanceToPlain)(entity);
}
}
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "title", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleMakeDTO_1.DynamicMakeDTO),
__metadata("design:type", VehicleMakeDTO_1.DynamicMakeDTO)
], VehicleCreateDTO.prototype, "make", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleModelDTO_1.DynamicModelDTO),
__metadata("design:type", VehicleModelDTO_1.DynamicModelDTO)
], VehicleCreateDTO.prototype, "model", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleTypeDTO_1.DynamicVehicleBodyTypeDTO),
__metadata("design:type", VehicleTypeDTO_1.DynamicVehicleBodyTypeDTO)
], VehicleCreateDTO.prototype, "bodyType", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "vin", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "vehicleSpec", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "chassisNumber", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "trim", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "mileage", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "odometer", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "fuelType", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "color", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "engineCapacity", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "numberOfCylinders", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "evRange", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "cylinderCapacity", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "doors", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "seats", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "keys", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "wheelsType", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "airbags", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "transmission", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "driveType", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "emissions", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsEnum)(enums_1.VehicleWarrantyYearType),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "warrantyYears", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "warrantyKm", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "warranty", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsEnum)(enums_1.VehicleWarrantyYearType),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "serviceContractYears", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "serviceContractKm", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "serviceContract", void 0);
__decorate([
(0, class_validator_1.IsArray)(),
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.ValidateNested)({ each: true }),
(0, class_transformer_1.Type)(() => VehicleMedia_1.VehicleMediaCreateDTO),
__metadata("design:type", Array)
], VehicleCreateDTO.prototype, "media", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.ValidateNested)({ each: true }),
(0, class_transformer_1.Type)(() => VehicleFinanceDTO_1.VehicleFinanceCreateDTO),
__metadata("design:type", VehicleFinanceDTO_1.VehicleFinanceCreateDTO)
], VehicleCreateDTO.prototype, "finance", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "year", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "price", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleCreateDTO.prototype, "status", void 0);
__decorate([
(0, class_validator_1.IsArray)(),
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)({ each: true }),
__metadata("design:type", Array)
], VehicleCreateDTO.prototype, "features", void 0);
__decorate([
(0, class_validator_1.ValidateNested)(),
(0, class_validator_1.IsOptional)(),
(0, class_transformer_1.Type)(() => VehicleMetaDataDTO),
__metadata("design:type", VehicleMetaDataDTO)
], VehicleCreateDTO.prototype, "metaData", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
__metadata("design:type", Boolean)
], VehicleCreateDTO.prototype, "isDraft", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
__metadata("design:type", Number)
], VehicleCreateDTO.prototype, "pageNo", void 0);
exports.VehicleCreateDTO = VehicleCreateDTO;
class VehicleFeaturesUpdateDTO {
validate() {
const errors = (0, class_validator_1.validateSync)(this);
return errors.map((error) => { var _a; return Object.values((_a = error.constraints) !== null && _a !== void 0 ? _a : {}); }).flat();
}
static fromPlain(plain) {
return (0, class_transformer_1.plainToClass)(VehicleFeaturesUpdateDTO, plain);
}
static toPlain(entity) {
return (0, class_transformer_1.instanceToPlain)(entity);
}
}
__decorate([
(0, class_validator_1.IsArray)(),
(0, class_validator_1.IsString)({ each: true }),
__metadata("design:type", Array)
], VehicleFeaturesUpdateDTO.prototype, "data", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsBoolean)(),
__metadata("design:type", Boolean)
], VehicleFeaturesUpdateDTO.prototype, "replace", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)({ each: true }),
(0, class_transformer_1.Transform)(({ value }) => Array.isArray(value) ? value : [value]),
__metadata("design:type", Object)
], VehicleFeaturesUpdateDTO.prototype, "filter", void 0);
exports.VehicleFeaturesUpdateDTO = VehicleFeaturesUpdateDTO;
class VehicleUpdateDTO extends BaseDTO_1.BaseUpdateDTO {
validate() {
const errors = (0, class_validator_1.validateSync)(this);
const customErrors = [];
// Only validate if at least one warranty field is provided
if (this.warrantyYears !== undefined || this.warrantyKm !== undefined) {
if (!this.warrantyYears && !this.warrantyKm) {
customErrors.push("Either warranty years or warranty kilometers must be provided");
}
}
// Only validate if at least one service contract field is provided
if (this.serviceContractYears !== undefined ||
this.serviceContractKm !== undefined) {
if (!this.serviceContractYears && !this.serviceContractKm) {
customErrors.push("Either service contract years or service contract kilometers must be provided");
}
}
return [
...errors.map((error) => { var _a; return Object.values((_a = error.constraints) !== null && _a !== void 0 ? _a : {}); }).flat(),
...customErrors,
];
}
static fromPlain(plain) {
return (0, class_transformer_1.plainToClass)(VehicleUpdateDTO, plain);
}
static toPlain(entity) {
return (0, class_transformer_1.instanceToPlain)(entity);
}
}
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "title", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleMakeDTO_1.DynamicMakeDTO),
__metadata("design:type", VehicleMakeDTO_1.DynamicMakeDTO)
], VehicleUpdateDTO.prototype, "make", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleModelDTO_1.DynamicModelDTO),
__metadata("design:type", VehicleModelDTO_1.DynamicModelDTO)
], VehicleUpdateDTO.prototype, "model", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleTypeDTO_1.DynamicVehicleBodyTypeDTO),
__metadata("design:type", VehicleTypeDTO_1.DynamicVehicleBodyTypeDTO)
], VehicleUpdateDTO.prototype, "bodyType", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "vin", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "chassisNumber", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "trim", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "mileage", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "fuelType", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "color", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "engineCapacity", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "numberOfCylinders", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "evRange", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "cylinderCapacity", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "doors", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "seats", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "keys", void 0);
__decorate([
(0, class_validator_1.IsNotEmpty)(),
(0, class_validator_1.IsNumber)(),
(0, class_validator_1.IsOptional)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "odometer", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "wheelsType", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "airbags", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "transmission", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "driveType", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "emissions", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsEnum)(enums_1.VehicleWarrantyYearType),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "warrantyYears", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "warrantyKm", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsEnum)(enums_1.VehicleWarrantyYearType),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "serviceContractYears", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "serviceContractKm", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsArray)(),
(0, class_validator_1.ValidateNested)({ each: true }),
(0, class_transformer_1.Type)(() => VehicleMedia_1.VehicleMediaUpdateDTO),
__metadata("design:type", VehicleMedia_1.VehicleMediaUpdateDTO)
], VehicleUpdateDTO.prototype, "media", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "year", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsNumber)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "price", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], VehicleUpdateDTO.prototype, "status", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
__metadata("design:type", Boolean)
], VehicleUpdateDTO.prototype, "isDraft", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
__metadata("design:type", Number)
], VehicleUpdateDTO.prototype, "pageNo", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleFeaturesUpdateDTO),
__metadata("design:type", VehicleFeaturesUpdateDTO)
], VehicleUpdateDTO.prototype, "features", void 0);
__decorate([
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleMetaDataDTO),
__metadata("design:type", VehicleMetaDataDTO)
], VehicleUpdateDTO.prototype, "metaData", void 0);
exports.VehicleUpdateDTO = VehicleUpdateDTO;
class DynamicVehicleDTO {
validate() {
if (!this.existingId && !this.new) {
throw new Error("Either an existing vehicle or new vehicle details must be provided.");
}
}
}
__decorate([
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsOptional)(),
__metadata("design:type", String)
], DynamicVehicleDTO.prototype, "existingId", void 0);
__decorate([
(0, class_validator_1.ValidateNested)(),
(0, class_transformer_1.Type)(() => VehicleCreateDTO),
(0, class_validator_1.IsOptional)(),
__metadata("design:type", VehicleCreateDTO)
], DynamicVehicleDTO.prototype, "new", void 0);
exports.DynamicVehicleDTO = DynamicVehicleDTO;