model now get deleted from user
This commit is contained in:
		@@ -2,6 +2,8 @@ import should from 'should/as-function';
 | 
			
		||||
import ModelFileModel from '../models/model_file';
 | 
			
		||||
import TestHelper from "../test/helper";
 | 
			
		||||
import ModelModel from '../models/model';
 | 
			
		||||
import UserModel from '../models/user';
 | 
			
		||||
import mongoose from 'mongoose';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
describe('/model', () => {
 | 
			
		||||
@@ -232,6 +234,22 @@ describe('/model', () => {
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
    it ('removes the model_id from all user.models', done => {
 | 
			
		||||
      TestHelper.request(server, done, {
 | 
			
		||||
        method: 'delete',
 | 
			
		||||
        url: '/model/VN/Model%20A',
 | 
			
		||||
        auth: {basic: 'admin'},
 | 
			
		||||
        httpStatus: 200
 | 
			
		||||
      }).end((err, res) => {
 | 
			
		||||
        if (err) return done(err);
 | 
			
		||||
        should(res.body).be.eql({status: 'OK'});
 | 
			
		||||
        UserModel.find({models: mongoose.Types.ObjectId("120000000000000000000001")}).lean().exec((err, res) => {
 | 
			
		||||
          if (err) return done(err);
 | 
			
		||||
          should(res).have.lengthOf(0);
 | 
			
		||||
          done();
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
    it('returns 404 for an unknown group', done => {
 | 
			
		||||
      TestHelper.request(server, done, {
 | 
			
		||||
        method: 'delete',
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ import bodyParser from 'body-parser';
 | 
			
		||||
 | 
			
		||||
import ModelFileModel from '../models/model_file';
 | 
			
		||||
import ModelModel from '../models/model';
 | 
			
		||||
import UserModel from '../models/user';
 | 
			
		||||
import _ from 'lodash';
 | 
			
		||||
import ModelValidate from './validate/model';
 | 
			
		||||
import res400 from './validate/res400';
 | 
			
		||||
@@ -54,7 +55,7 @@ router.post('/model/:group', (req, res, next) => {
 | 
			
		||||
          {$push: {models: model as never}}
 | 
			
		||||
        ).log(req).lean().exec(err => {
 | 
			
		||||
          if (err) return next(err);
 | 
			
		||||
          res.json({status: 'OK'})
 | 
			
		||||
          res.json({status: 'OK'});
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
@@ -62,7 +63,7 @@ router.post('/model/:group', (req, res, next) => {
 | 
			
		||||
      new ModelModel({group: req.params.group, models: [model]}).save((err, data) => {
 | 
			
		||||
        if (err) return next(err);
 | 
			
		||||
        db.log(req, 'models', {_id: data._id}, data.toObject());
 | 
			
		||||
        res.json({status: 'OK'})
 | 
			
		||||
        res.json({status: 'OK'});
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
@@ -77,21 +78,26 @@ router.delete('/model/:group(((?!file)[^\\/]+?))/:name', (req, res, next) => {
 | 
			
		||||
    if (!data || !data.models.find(e => e.name === req.params.name)) {
 | 
			
		||||
      return res.status(404).json({status: 'Not found'});
 | 
			
		||||
    }
 | 
			
		||||
    if (data.models.length > 1) {  // only remove model
 | 
			
		||||
      ModelModel.findOneAndUpdate(
 | 
			
		||||
        {group: req.params.group},
 | 
			
		||||
        {$pull: {models: data.models.find(e => e.name === req.params.name) as never}}
 | 
			
		||||
      ).log(req).lean().exec(err => {
 | 
			
		||||
        if (err) return next(err);
 | 
			
		||||
        res.json({status: 'OK'})
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    else {  // remove document
 | 
			
		||||
      ModelModel.findOneAndDelete({group: req.params.group}).log(req).lean().exec(err => {
 | 
			
		||||
        if (err) return next(err);
 | 
			
		||||
        res.json({status: 'OK'})
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    // delete all references in user.models
 | 
			
		||||
    UserModel.updateMany({}, {$pull: {models: data.models.find(e => e.name === req.params.name)._id as never}},
 | 
			
		||||
      { multi: true }).log(req).lean().exec(err => {
 | 
			
		||||
      if (err) return next(err);
 | 
			
		||||
      if (data.models.length > 1) {  // only remove model
 | 
			
		||||
        ModelModel.findOneAndUpdate(
 | 
			
		||||
          {group: req.params.group},
 | 
			
		||||
          {$pull: {models: data.models.find(e => e.name === req.params.name) as never}}
 | 
			
		||||
        ).log(req).lean().exec(err => {
 | 
			
		||||
          if (err) return next(err);
 | 
			
		||||
          res.json({status: 'OK'})
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      else {  // remove document
 | 
			
		||||
        ModelModel.findOneAndDelete({group: req.params.group}).log(req).lean().exec(err => {
 | 
			
		||||
          if (err) return next(err);
 | 
			
		||||
          res.json({status: 'OK'})
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user