ref: Little refactoring

This commit is contained in:
Maksim Eltyshev
2025-08-25 17:23:59 +02:00
parent 4d77a1f596
commit 60a94f33fc
5 changed files with 28 additions and 55 deletions

View File

@@ -1,31 +0,0 @@
/*!
* Copyright (c) 2024 PLANKA Software GmbH
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
*/
module.exports = {
sync: true,
inputs: {
recordOrRecords: {
type: 'ref',
required: true,
},
},
fn(inputs) {
const users = _.isPlainObject(inputs.recordOrRecords)
? [inputs.recordOrRecords]
: inputs.recordOrRecords;
const fileManager = sails.hooks['file-manager'].getInstance();
users.forEach(async (user) => {
if (user.avatar) {
await fileManager.deleteDir(
`${sails.config.custom.userAvatarsPathSegment}/${user.avatar.dirname}`,
);
}
});
},
};

View File

@@ -21,8 +21,8 @@ const makeWhereQueryBuilder = (Model) => (criteria) => {
throw new Error('Unknown column');
}
parts.push(`${columnName} = $${index + 1}`);
values.push(value);
parts.push(`${columnName} = $${values.length}`);
}
return [parts.join(' AND '), values];

View File

@@ -206,12 +206,12 @@ const update = async (criteria, values) => {
const cards = await Card.update(criteria).set(values).fetch().usingConnection(db);
let tasks = [];
if (card) {
if (!_.isUndefined(values.isClosed)) {
tasks = await Task.update({
linkedCardId: sails.helpers.utils.mapRecords(cards),
})
.set({
isCompleted: card.isClosed,
isCompleted: values.isClosed,
})
.fetch()
.usingConnection(db);
@@ -232,8 +232,8 @@ const updateOne = async (criteria, values) => {
.set({ ...values })
.usingConnection(db);
let tasks = [];
if (card) {
let tasks;
if (!_.isUndefined(values.isClosed) && card) {
tasks = await Task.update({
linkedCardId: card.id,
})

View File

@@ -52,19 +52,24 @@ const getOneTrashByBoardId = (boardId) =>
});
const updateOne = async (criteria, values) => {
if (!_.isUndefined(values.type)) {
if (values.type) {
return sails.getDatastore().transaction(async (db) => {
const [whereQuery, whereQueryValues] = buildWhereQuery(criteria);
const queryResult = await sails
.sendNativeQuery(`SELECT type FROM list WHERE ${whereQuery} FOR UPDATE`, whereQueryValues)
.sendNativeQuery(
`SELECT type FROM list WHERE ${whereQuery} LIMIT 1 FOR UPDATE`,
whereQueryValues,
)
.usingConnection(db);
if (queryResult.rowCount === 0) {
return { list: null };
}
const [{ type: prevType }] = queryResult.rows;
const prev = {
type: queryResult.rows[0].type,
};
const list = await List.updateOne(criteria)
.set({ ...values })
@@ -74,18 +79,15 @@ const updateOne = async (criteria, values) => {
let tasks = [];
if (list) {
const prevTypeState = List.TYPE_STATE_BY_TYPE[prevType];
const prevTypeState = List.TYPE_STATE_BY_TYPE[prev.type];
const typeState = List.TYPE_STATE_BY_TYPE[list.type];
let isClosed;
if (prevTypeState === List.TypeStates.CLOSED && typeState === List.TypeStates.OPENED) {
isClosed = false;
} else if (
prevTypeState === List.TypeStates.OPENED &&
typeState === List.TypeStates.CLOSED
) {
isClosed = true;
}
const transitions = {
[`${List.TypeStates.CLOSED}->${List.TypeStates.OPENED}`]: false,
[`${List.TypeStates.OPENED}->${List.TypeStates.CLOSED}`]: true,
};
const isClosed = transitions[`${prevTypeState}->${typeState}`];
if (!_.isUndefined(isClosed)) {
cards = await Card.update({

View File

@@ -96,13 +96,13 @@ const updateOne = async (criteria, values) => {
}
}
let prevAvatar;
let prev;
if (!_.isUndefined(values.avatar)) {
const [whereQuery, whereQueryValues] = buildWhereQuery(criteria);
const queryResult = await sails
.sendNativeQuery(
`SELECT avatar FROM user_account WHERE ${whereQuery} FOR UPDATE`,
`SELECT avatar FROM user_account WHERE ${whereQuery} LIMIT 1 FOR UPDATE`,
whereQueryValues,
)
.usingConnection(db);
@@ -111,7 +111,9 @@ const updateOne = async (criteria, values) => {
return { user: null };
}
[{ avatar: prevAvatar }] = queryResult.rows;
prev = {
avatar: queryResult.rows[0].avatar,
};
}
const user = await User.updateOne(criteria)
@@ -119,12 +121,12 @@ const updateOne = async (criteria, values) => {
.usingConnection(db);
let uploadedFile;
if (hasAvatarChanged(user.avatar, prevAvatar)) {
if (prevAvatar) {
if (!_.isUndefined(values.avatar) && hasAvatarChanged(user.avatar, prev.avatar)) {
if (prev.avatar) {
const queryResult = await sails
.sendNativeQuery(
'UPDATE uploaded_file SET references_total = CASE WHEN references_total > 1 THEN references_total - 1 END, updated_at = $1 WHERE id = $2 RETURNING *',
[new Date().toISOString(), prevAvatar.uploadedFileId],
[new Date().toISOString(), prev.avatar.uploadedFileId],
)
.usingConnection(db);