Remove dedicated POST /category/:id/move route.
Dropping the standalone move endpoint; category relocation is now covered by PATCH /category/:id via parentId (merged with name rename). Removes the move route docs and regenerates API docs.
This commit is contained in:
@@ -530,102 +530,4 @@ export function register(app, basePath = '') {
|
||||
res.status(status).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @openapi
|
||||
* /category/{id}/move:
|
||||
* post:
|
||||
* tags: [Category]
|
||||
* summary: Move category to a new parent
|
||||
* description: |
|
||||
* Moves a category to a new parent. Both source and target must be in
|
||||
* the same authorized company. Moving into itself or into a descendant
|
||||
* (cycle) fails with `Invalid parent`. The moved category gets the next
|
||||
* sibling `sort` under the new parent.
|
||||
* security:
|
||||
* - cookieAuth: []
|
||||
* x-markdown: category/move.md
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: integer
|
||||
* description: Category id to move
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* required: [parentId]
|
||||
* properties:
|
||||
* parentId:
|
||||
* type: integer
|
||||
* description: New parent category id
|
||||
* example:
|
||||
* parentId: 3
|
||||
* responses:
|
||||
* 200:
|
||||
* description: Moved category
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* category:
|
||||
* type: object
|
||||
* required: [id, parentId, sort]
|
||||
* properties:
|
||||
* id:
|
||||
* type: integer
|
||||
* parentId:
|
||||
* type: integer
|
||||
* sort:
|
||||
* type: integer
|
||||
* 400:
|
||||
* description: Invalid parent
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
* 401:
|
||||
* description: Unauthorized
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
* 403:
|
||||
* description: Not authorized
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
* 404:
|
||||
* description: Category not found
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/Error'
|
||||
*/
|
||||
app.post(`${basePath}/category/:id/move`, async (req, res) => {
|
||||
const id = Number(req.params.id);
|
||||
if (!Number.isInteger(id) || id <= 0) {
|
||||
return res.status(400).json({ error: 'id is required' });
|
||||
}
|
||||
|
||||
const parentId = Number(req.body?.parentId);
|
||||
if (!Number.isInteger(parentId) || parentId <= 0) {
|
||||
return res.status(400).json({ error: 'parentId is required' });
|
||||
}
|
||||
|
||||
try {
|
||||
const category = await db.move({ googleAuthId: req.user.id, id, parentId });
|
||||
res.status(200).json({ category });
|
||||
} catch (error) {
|
||||
const status = categoryErrorStatus(error);
|
||||
if (status === 500) console.error('Move category failed:', error);
|
||||
res.status(status).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user