ваше сообщение коммита

This commit is contained in:
2025-07-15 14:14:53 +03:00
parent 584ff401ad
commit d952e89a26
10 changed files with 1109 additions and 124 deletions

View File

@@ -0,0 +1,16 @@
-- 048_add_order_to_user_rows.sql
-- Добавляет поле order в user_rows для поддержки сортировки строк
ALTER TABLE user_rows ADD COLUMN "order" INTEGER DEFAULT 0;
-- Проставить уникальные значения order для существующих строк (по id)
DO $$
DECLARE
r RECORD;
idx INTEGER := 1;
BEGIN
FOR r IN SELECT id FROM user_rows ORDER BY id LOOP
UPDATE user_rows SET "order" = idx WHERE id = r.id;
idx := idx + 1;
END LOOP;
END$$;

View File

@@ -93,7 +93,6 @@
"semver": "^7.7.1",
"**/utf7/semver": "^7.7.1",
"tar-fs": "^3.0.0",
"parse-duration": "^1.1.0",
"pbkdf2": "^3.1.2",
"nanoid": "^5.0.0",
"brace-expansion": "^2.0.1"

View File

@@ -365,6 +365,27 @@ router.patch('/:id', async (req, res, next) => {
}
});
// PATCH: массовое обновление порядка строк (order)
router.patch('/:id/rows/order', async (req, res, next) => {
try {
const tableId = req.params.id;
const { order } = req.body; // order: [{rowId, order}, ...]
if (!Array.isArray(order)) {
return res.status(400).json({ error: 'order должен быть массивом' });
}
for (const item of order) {
if (!item.rowId || typeof item.order !== 'number') continue;
await db.getQuery()(
'UPDATE user_rows SET "order" = $1, updated_at = NOW() WHERE id = $2 AND table_id = $3',
[item.order, item.rowId, tableId]
);
}
res.json({ success: true });
} catch (err) {
next(err);
}
});
// Получить id колонок с purpose 'question' и 'answer'
async function getQuestionAnswerColumnIds(tableId) {
const { rows } = await db.getQuery()(