Skip to content

Commit 3d2a4d9

Browse files
committed
Multi-delete.
1 parent cdd0da7 commit 3d2a4d9

3 files changed

Lines changed: 32 additions & 9 deletions

File tree

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,14 @@ DELETE /<model.id>/<id>
364364
DELETE /todo/5
365365
```
366366
367+
To delete multiple records at once, pass multiple ids (separated by commas).
368+
369+
```
370+
DELETE /<model.id>/<id1>,<id2>,<id3>
371+
372+
DELETE /todo/5,7,12
373+
```
374+
367375
<a name="API_Extras"></a>
368376
### Extras endpoints
369377

js/crud.js

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -358,20 +358,35 @@ function updateOne(req, res) {
358358

359359

360360
// --------------------------------------------------------------------------------------
361-
// ----------------- DELETE ONE ----------------------------------------------------
361+
// ----------------- DELETE ONE / MANY ----------------------------------------------
362362
// --------------------------------------------------------------------------------------
363363

364364
// - delete a single record
365-
function deleteOne(req, res) {
365+
function deleteX(req, res) {
366366
logger.logReq('DELETE ONE', req);
367367
const m = dico.getModel(req.params.entity),
368368
id = req.params.id
369+
let sql = 'DELETE FROM '+m.schemaTable+' WHERE '+m.pKey,
370+
params = null
369371

370-
if(m && id){
371-
// SQL Query > Delete Data
372-
const sql = 'DELETE FROM '+m.schemaTable+
373-
' WHERE '+m.pKey+'=$1 RETURNING '+m.pKey+'::integer AS id;'
374-
query.runQuery(res, sql, [id], true);
372+
if(m){
373+
const ids=id.split(',')
374+
if(ids.length===1){
375+
// SQL Query > Delete Data
376+
sql += '=$1 RETURNING '+m.pKey+'::integer AS id;'
377+
params = [id]
378+
}else{
379+
if(ids.length){
380+
console.log(ids)
381+
sql += ' IN('+ids.map((i, idx)=>'$'+(idx+1)).join(',')+')'+
382+
' RETURNING '+m.pKey+'::integer AS id';
383+
params = ids
384+
}else{
385+
errors.badRequest(res)
386+
return
387+
}
388+
}
389+
query.runQuery(res, sql, params, ids.length===1);
375390
}else{
376391
errors.badRequest(res)
377392
}
@@ -467,7 +482,7 @@ module.exports = {
467482
SQLgetOne: SQLgetOne,
468483
insertOne: insertOne,
469484
updateOne: updateOne,
470-
deleteOne: deleteOne,
485+
deleteX: deleteX,
471486

472487
// - Sub-collections
473488
getCollec: collecOne,

js/routes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ router.patch(apiPath+':entity/:id', crud.updateOne);
5656
router.put(apiPath+':entity/:id', crud.updateOne);
5757
router.post(apiPath+':entity/upload/:id', upload.uploadOne);
5858
// - DELETE ONE -
59-
router.delete(apiPath+':entity/:id', crud.deleteOne);
59+
router.delete(apiPath+':entity/:id', crud.deleteX);
6060
// - LOV -
6161
router.get(apiPath+':entity/lov/:field', crud.lovOne);
6262
// - SUB-COLLECTIONS -

0 commit comments

Comments
 (0)