@everytravel/shared
Version:
A comprehensive shared package for Everytravel containing Mongoose models and CRUD operations for hotel booking, user management, and transaction handling. Updated with improved model syntax and enhanced error handling.
51 lines (47 loc) • 1.44 kB
JavaScript
/**
* Update operations for Mongoose models
*/
export const updateOne = async (Model, filter, update, options = {}) => {
try {
const { new: returnNew = true } = options;
return await Model.findOneAndUpdate(filter, update, {
new: returnNew,
runValidators: true
});
} catch (error) {
throw new Error(`Error updating document: ${error.message}`);
}
};
export const updateMany = async (Model, filter, update, options = {}) => {
try {
return await Model.updateMany(filter, update, {
runValidators: true,
...options
});
} catch (error) {
throw new Error(`Error updating documents: ${error.message}`);
}
};
export const softDelete = async (Model, filter) => {
try {
return await Model.updateMany(filter, {
softDeleted: true,
deletedAt: new Date()
});
} catch (error) {
throw new Error(`Error soft deleting documents: ${error.message}`);
}
};
export const bulkSoftDelete = async (Model, ids) => {
try {
return await Model.updateMany(
{ _id: { $in: ids } },
{
softDeleted: true,
deletedAt: new Date()
}
);
} catch (error) {
throw new Error(`Error bulk soft deleting documents: ${error.message}`);
}
};