63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
const uniqueValidator = require('mongoose-unique-validator');
|
|
module.exports = mongoose => {
|
|
var schema = mongoose.Schema(
|
|
{
|
|
// Basic Information
|
|
vehicle_number: {
|
|
type: Number,
|
|
required: true,
|
|
},
|
|
responsible_driver: String,
|
|
responsible_driver_id: String,
|
|
capacity: Number,
|
|
mileage: Number,
|
|
make: String,
|
|
vehicle_model: String,
|
|
year: String,
|
|
vin: String,
|
|
tag: {
|
|
type: String,
|
|
required: true
|
|
},
|
|
gps_tag: String,
|
|
ezpass: String,
|
|
has_lift_equip: Boolean,
|
|
fuel_type: String,
|
|
title: String,
|
|
title_other: String,
|
|
|
|
// Compliance & Deadlines
|
|
insurance_start_date: String,
|
|
vehicle_registration_date: String,
|
|
|
|
// Legacy fields (keeping for backward compatibility)
|
|
insurance_expire_on: String,
|
|
title_registration_on: String,
|
|
emission_test_on: String,
|
|
oil_change_mileage: Number,
|
|
oil_change_date: String,
|
|
|
|
// Check List
|
|
checklist: [{
|
|
type: String
|
|
}],
|
|
|
|
// Additional Information
|
|
note: String,
|
|
|
|
// System fields
|
|
status: String,
|
|
site: Number
|
|
},
|
|
{ collection: 'vehicle', timestamps: true }
|
|
);
|
|
schema.method("toJSON", function() {
|
|
const { __v, _id, ...object } = this.toObject();
|
|
object.id = _id;
|
|
return object;
|
|
});
|
|
schema.index({tag: 1, site:1}, {unique: true});
|
|
const Vehicle = mongoose.model("vehicle", schema);
|
|
return Vehicle;
|
|
};
|