1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-19 13:19:44 +02:00
planka/server/api/hooks/query-methods/models/Project.js
Maksim Eltyshev 2ee1166747 feat: Version 2
Closes #627, closes #1047
2025-05-10 02:09:06 +02:00

67 lines
1.5 KiB
JavaScript

/*!
* Copyright (c) 2024 PLANKA Software GmbH
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
*/
const defaultFind = (criteria) => Project.find(criteria).sort('id');
/* Query methods */
const createOne = (values, { user } = {}) =>
sails.getDatastore().transaction(async (db) => {
let project = await Project.create({ ...values })
.fetch()
.usingConnection(db);
const projectManager = await ProjectManager.create({
projectId: project.id,
userId: user.id,
})
.fetch()
.usingConnection(db);
if (values.type === Project.Types.PRIVATE) {
project = await Project.updateOne(project.id)
.set({
ownerProjectManagerId: projectManager.id,
})
.usingConnection(db);
}
return { project, projectManager };
});
const getByIds = (ids) => defaultFind(ids);
const getShared = ({ exceptIdOrIds } = {}) => {
const criteria = {
ownerProjectManagerId: null,
};
if (exceptIdOrIds) {
criteria.id = {
'!=': exceptIdOrIds,
};
}
return defaultFind(criteria);
};
const getOneById = (id) => Project.findOne(id);
const updateOne = (criteria, values) => Project.updateOne(criteria).set({ ...values });
// eslint-disable-next-line no-underscore-dangle
const delete_ = (criteria) => Project.destroy(criteria).fetch();
const deleteOne = (criteria) => Project.destroyOne(criteria);
module.exports = {
createOne,
getByIds,
getShared,
getOneById,
updateOne,
deleteOne,
delete: delete_,
};