mongoose-bread
Version:
A pagination and softdelete library for mongoose
133 lines (132 loc) • 4.73 kB
JavaScript
;
var mongoose = require("mongoose"),
MongooseBreadError = require("./MongooseBreadError"),
_require = require("mongoose"),
isValidObjectId = _require.isValidObjectId;
function checkRequest(a) {
var b = {
paramsIdIsValid(c, d) {
if (!a.params || !a.params[c])
throw new MongooseBreadError({
message: `mongooseBread helper "${d}" expects request.params.${c} to be set`,
details: `Make sure you have a :${c} parameter defined in your Router URL definition`,
statusCode: 400,
issuer: `MongooseBreadHelper ${d}`,
});
if (!a.params || !isValidObjectId(a.params[c]))
throw new MongooseBreadError({
message: `mongooseBread helper "${d}" expects request.params.${c} to be a valid ObjectId`,
details: `Make sure you have passed a valid ObjectId for the :${c} parameter`,
statusCode: 400,
issuer: `MongooseBreadHelper ${d}`,
});
return b;
},
bodyIsNotAnArray(c) {
if (Array.isArray(a.body))
throw new MongooseBreadError({
message: `mongooseBread helper "${c}" expects request.body to be an Object`,
details: `If passed ObjectId as request.params parameter make sure to pass an Object in request.body - got Array`,
statusCode: 400,
issuer: `MongooseBreadHelper ${c}`,
});
return b;
},
hasBody(c) {
if (!a.body)
throw new MongooseBreadError({
message: `mongooseBread helper "${c}" expects request.body to be set`,
details: `Make sure you have a JSON Object in request.body`,
statusCode: 400,
issuer: `MongooseBreadHelper ${c}`,
});
return b;
},
hasBodyProperty(c, d) {
if (!a.body[c])
throw new MongooseBreadError({
message: `mongooseBread helper "${d}" expects request.body.${c} to be set`,
details: `Make sure request.body.${c} is not undefined`,
statusCode: 400,
issuer: `MongooseBreadHelper ${d}`,
});
return b;
},
bodyPropertyIsArray(c, d) {
if (!Array.isArray(a.body[c]))
throw new MongooseBreadError({
message: `mongooseBread helper "${d}" expects request.body.${c} to be an array`,
details: `Make sure request.body.${c} is an array`,
statusCode: 400,
issuer: `MongooseBreadHelper ${d}`,
});
return b;
},
bodyPropertyArrayIncludesOnlyObjectIds(c, d) {
var e = a.body[c].reduce(function (a, b) {
return !!a && isValidObjectId(b);
}, !0);
if (!e)
throw new MongooseBreadError({
message: `mongooseBread helper "${d}" expects request.body.${c} to include only valid ObjectIds`,
details: `Make sure request.body.${c} array only includes valid ObjectIds`,
statusCode: 400,
issuer: `MongooseBreadHelper ${d}`,
});
return b;
},
};
return b;
}
function checkSchema(a) {
var b = {
hasMongoosePaginateV2AlreadyInstalled(c) {
if (a.statics.paginate)
throw new MongooseBreadError({
message: `MongooseBread "${c}" detected already installed dependency`,
details: `Make sure "mongoose-paginage-v2" is not installed manually - mongoose-bread will set it up automatically`,
statusCode: 500,
issuer: `MongooseBread ${c}`,
});
return b;
},
hasMongooseDeleteAlreadyInstalled(c) {
if (a.statics.findDeleted)
throw new MongooseBreadError({
message: `MongooseBread "${c}" detected already installed dependency`,
details: `Make sure "mongoose-delete" is not installed manually - mongoose-bread will set it up automatically`,
statusCode: 500,
issuer: `MongooseBread ${c}`,
});
return b;
},
getSearchableFieldsOfTypeString(b) {
var c = b.filter(function (b) {
var c = a.path(b);
if (!c) {
return (
console.warn(
`schema.path(${b}) does not exist - searchableField ${b} has been removed`
),
!1
);
}
if (c instanceof mongoose.Schema.Types.String) return !0;
var d = c instanceof mongoose.Schema.Types.Array;
if (d) {
var e = c.caster && c.caster instanceof mongoose.Schema.Types.String;
if (e) return !0;
}
return (
console.warn(
`schema.path(${b}) is not of type String or String[] - searchableField ${b} has been removed`
),
!1
);
});
return c;
},
};
return b;
}
module.exports = { checkRequest, checkSchema };