mysociety/popit-api

View on GitHub
src/routes/delete.js

Summary

Maintainability
A
0 mins
Test Coverage
"use strict";

var async = require('async');

function bulkDelete(req, res, next) {
  req.collection.remove(function(err) {
    if (err) {
      return next(err);
    }
    req.collection.deleteFromElasticsearch(function(err) {
      if (err) {
        return next(err);
      }
      res.send(204);
    });
  });
}

function bulkDeleteAll(req, res, next) {
  var collections = [
    'Person',
    'Organization',
    'Membership',
    'Post',
  ];
  async.each(collections, function deleteCollection(collection, done) {
    var Model = req.db.model(collection);
    Model.remove(function(err) {
      if (err) {
        return done(err);
      }
      Model.deleteFromElasticsearch(done);
    });
  }, function(err) {
    if (err) {
      return next(err);
    }
    res.send(204);
  });
}

function setup(app) {
  app.delete('/:collection', bulkDelete);
  app.delete('/', bulkDeleteAll);
}

module.exports = setup;