Spaces:
Runtime error
Runtime error
var mongoose = require('mongoose'); | |
var Schema = mongoose.Schema; | |
var CompanySchema = new Schema( | |
{ | |
name: { type: String, required: true, unique: true }, | |
shortName: String, | |
logo: String, | |
}, | |
{ timestamps: true }, | |
); | |
/* | |
*** Statics *** | |
*/ | |
// Get all companies | |
CompanySchema.statics.getAll = () => { | |
return new Promise((resolve, reject) => { | |
var query = Company.find(); | |
query.select('name shortName logo'); | |
query | |
.exec() | |
.then(rows => { | |
resolve(rows); | |
}) | |
.catch(err => { | |
reject(err); | |
}); | |
}); | |
}; | |
// Create company | |
CompanySchema.statics.create = company => { | |
return new Promise((resolve, reject) => { | |
var query = new Company(company); | |
query | |
.save(company) | |
.then(row => { | |
resolve({ _id: row._id, name: row.name }); | |
}) | |
.catch(err => { | |
if (err.code === 11000) | |
reject({ | |
fn: 'BadParameters', | |
message: 'Company name already exists', | |
}); | |
else reject(err); | |
}); | |
}); | |
}; | |
// Update company | |
CompanySchema.statics.update = (companyId, company) => { | |
return new Promise((resolve, reject) => { | |
var query = Company.findOneAndUpdate({ _id: companyId }, company); | |
query | |
.exec() | |
.then(rows => { | |
if (rows) resolve(rows); | |
else reject({ fn: 'NotFound', message: 'Company Id not found' }); | |
}) | |
.catch(err => { | |
if (err.code === 11000) | |
reject({ | |
fn: 'BadParameters', | |
message: 'Company name already exists', | |
}); | |
else reject(err); | |
}); | |
}); | |
}; | |
// Delete company | |
CompanySchema.statics.delete = companyId => { | |
return new Promise((resolve, reject) => { | |
var query = Company.findOneAndDelete({ _id: companyId }); | |
query | |
.exec() | |
.then(rows => { | |
if (rows) resolve(rows); | |
else reject({ fn: 'NotFound', message: 'Company Id not found' }); | |
}) | |
.catch(err => { | |
reject(err); | |
}); | |
}); | |
}; | |
/* | |
*** Methods *** | |
*/ | |
var Company = mongoose.model('Company', CompanySchema); | |
module.exports = Company; | |