2016-07-14 11:06:58 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Module dependencies
|
|
|
|
*/
|
|
|
|
|
2018-09-14 00:26:07 +02:00
|
|
|
// Public node modules.
|
|
|
|
const mongoose = require('mongoose');
|
|
|
|
const Mongoose = mongoose.Mongoose;
|
|
|
|
|
|
|
|
module.exports = (mongoose = new Mongoose()) => {
|
|
|
|
const Decimal = require('mongoose-float').loadType(mongoose, 2);
|
|
|
|
const Float = require('mongoose-float').loadType(mongoose, 20);
|
2016-07-14 12:15:42 +02:00
|
|
|
|
2016-07-14 11:06:58 +02:00
|
|
|
return {
|
2016-07-14 12:15:42 +02:00
|
|
|
convertType: mongooseType => {
|
2016-07-14 11:06:58 +02:00
|
|
|
switch (mongooseType.toLowerCase()) {
|
2018-03-17 16:43:25 +00:00
|
|
|
case 'array':
|
2018-06-17 13:24:13 +02:00
|
|
|
return Array;
|
2016-07-14 11:06:58 +02:00
|
|
|
case 'boolean':
|
2016-09-28 11:42:26 +02:00
|
|
|
return 'Boolean';
|
2016-07-14 11:06:58 +02:00
|
|
|
case 'binary':
|
|
|
|
return 'Buffer';
|
2018-03-17 16:42:28 +00:00
|
|
|
case 'date':
|
|
|
|
case 'datetime':
|
|
|
|
case 'time':
|
|
|
|
case 'timestamp':
|
|
|
|
return Date;
|
|
|
|
case 'decimal':
|
2018-09-10 16:05:00 +08:00
|
|
|
return Decimal;
|
2018-03-17 16:42:28 +00:00
|
|
|
case 'float':
|
2018-09-10 16:05:00 +08:00
|
|
|
return Float;
|
2018-03-17 16:42:28 +00:00
|
|
|
case 'json':
|
|
|
|
return 'Mixed';
|
|
|
|
case 'biginteger':
|
|
|
|
case 'integer':
|
|
|
|
return 'Number';
|
2016-07-14 11:06:58 +02:00
|
|
|
case 'uuid':
|
|
|
|
return 'ObjectId';
|
2018-03-17 16:42:28 +00:00
|
|
|
case 'email':
|
2016-07-14 11:06:58 +02:00
|
|
|
case 'enumeration':
|
2018-03-17 16:42:28 +00:00
|
|
|
case 'password':
|
|
|
|
case 'string':
|
|
|
|
case 'text':
|
2016-07-14 11:06:58 +02:00
|
|
|
return 'String';
|
|
|
|
default:
|
|
|
|
}
|
2018-09-10 16:05:00 +08:00
|
|
|
},
|
2018-09-14 00:26:07 +02:00
|
|
|
isObjectId: v => mongoose.Types.ObjectId.isValid(v),
|
|
|
|
toObjectId: v => mongoose.Types.ObjectId(v),
|
2016-09-28 11:42:26 +02:00
|
|
|
};
|
|
|
|
};
|