'use strict'; const Currencies = require('../helpers/currencies'); const env = require('../helpers/env'); const mongoose = require('mongoose'), Schema = mongoose.Schema; const schema = new Schema( { userId: { type: Schema.Types.ObjectId, ref: 'User', index: true }, byPuid: { type: Schema.Types.ObjectId, ref: 'User', index: true, required: true }, companyName: { type: String, default: '' }, address: { type: String, default: '' }, taxValue: { type: Number, min: 0 }, discount: { type: Number, min: 0 }, paymentTerm: { type: Number, min: 0, require: true }, termOpts: { type: [Number] }, currency: { type: String, enum: Object.keys(Currencies) }, note: { type: String, default: '' }, logo: { type: String, require: true, get: (logo) => logo ? `${env.INV_IMG_VIR_DIR}/${logo}` : undefined }, createdBy: { type: Schema.Types.ObjectId, ref: 'User', require: true }, updatedBy: { type: Schema.Types.ObjectId, ref: 'User', require: true }, }, { timestamps: true, toJSON: { getters: true } } ); schema.index({ userId: 1, byPuid: 1 }, { unique: true }); // TODO: Add index only when not exists or there will always be error module.exports = mongoose.model('invoice_settings', schema);