agmission/Development/server/model/common.js

45 lines
1.5 KiB
JavaScript

const Schema = require('mongoose').Schema,
validator = require('validator');
const location = {
gdt: { type: Date, required: true }, // GPS DateTime
lat: { type: Number, required: true },
lon: { type: Number, required: true },
alt: { type: Number, default: 0 }, // m
inputs: { type: Number, default: 0 }, // input number
speed: { type: Number, default: 0 }, // km/h
head: { type: Number, default: 0 }, // degree 0-359
temp: { type: Number },
humid: { type: Number },
appRate: { type: Number },
windSpd: { type: Number },
windHdg: { type: Number },
};
const AddressSchema = new Schema({
name: { type: String, required: false }, // Optional name field
line1: { type: String, require: false },
line2: { type: String, require: false },
city: { type: String, require: false },
postalCode: { type: String, require: false, alias: 'postal_code' },
state: { type: String, require: false }, // State would be used as Province in some countries
country: {
type: String,
require: true,
validate: [validator.isISO31661Alpha2, 'invalid_country_code'],
trim: true,
uppercase: true,
ref: 'Country', // Reference to Country model by code
localField: 'country', // Field in this schema
foreignField: 'code', // Field in Country schema
justOne: true
},
phone: { type: String, required: false }, // Optional phone number
isBilling: { type: Boolean, default: false } // Flag for the current billing address
});
module.exports = {
location, AddressSchema
}