45 lines
1.5 KiB
JavaScript
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
|
|
}
|