ваше сообщение коммита
This commit is contained in:
16
backend/db/migrations/048_add_order_to_user_rows.sql
Normal file
16
backend/db/migrations/048_add_order_to_user_rows.sql
Normal 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$$;
|
||||
@@ -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"
|
||||
|
||||
@@ -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()(
|
||||
|
||||
Reference in New Issue
Block a user