1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-18 20:59:44 +02:00
planka/server/api/helpers/notifications/update-many.js

56 lines
1.1 KiB
JavaScript
Raw Normal View History

2022-12-26 21:10:50 +01:00
const recordsOrIdsValidator = (value) =>
_.every(value, _.isPlainObject) || _.every(value, _.isString);
module.exports = {
inputs: {
recordsOrIds: {
type: 'json',
2022-12-26 21:10:50 +01:00
custom: recordsOrIdsValidator,
required: true,
},
values: {
type: 'json',
required: true,
},
user: {
type: 'ref',
},
request: {
type: 'ref',
},
},
async fn(inputs) {
2022-12-26 21:10:50 +01:00
const { values } = inputs;
const criteria = {};
2022-12-26 21:10:50 +01:00
if (_.every(inputs.recordsOrIds, _.isPlainObject)) {
criteria.id = sails.helpers.utils.mapRecords(inputs.recordsOrIds);
} else if (_.every(inputs.recordsOrIds, _.isString)) {
criteria.id = inputs.recordsOrIds;
}
if (inputs.user) {
criteria.userId = inputs.user.id;
}
2022-12-26 21:10:50 +01:00
const notifications = await Notification.update(criteria)
.set({ ...values })
.fetch();
notifications.forEach((notification) => {
sails.sockets.broadcast(
`user:${notification.userId}`,
'notificationUpdate',
{
item: notification,
},
inputs.request,
);
});
return notifications;
},
};