<commit_before>(function() {

    module.exports = function(app) {

        var Contato = app.models.contato
        var controller =  {};
        
        controller.listaContatos = function(req, res) {

            var promise = Contato.find().exec().then(
                function(contatos) {
                    res.json(contatos)
                }
            )
        }

        controller.obtemContato = function(req, res) {
            var _id = req.params.id;
            Contato.findById(_id).exec().then(
                function(contato) {
                    if (!contato) throw new Error ("Contato não encontrado")
                    res.json(contato)
                },
                function(erro) {
                    console.log(erro)
                    res.status(404).json(erro)
                }
            )
        }

        controller.removeContato = function(req, res) {
            var idContato = req.params.id;

            contatos = contatos.filter(function(contato) {
                return contato._id != idContato;
            });
            res.status(204).end();
        }

        controller.salvaContato = function(req, res) {
            var contato = req.body;
            contatos = contato._id ? atualiza(contato) : adiciona(contato);
            res.json(contato);
        }

        function adiciona(contatoNovo) {
            contatoNovo._id = 10 + ID_CONTATO_INC;
            contatos.push(contatoNovo);
            return contatoNovo;
        }

        function atualiza(contatoAlterar) {
            contatos = contatos.map(function(contato) {
                if (contato._id == contatoAlterar._id) {
                    contato = contatoAlterar;
                }
                return contato;
            });
            return contatoAlterar;
        }

        return controller
    }

})()<commit_msg>insert e delete mongo ok!<commit_after>(function() {

    module.exports = function(app) {

        var Contato = app.models.contato
        var controller =  {};
        
        controller.listaContatos = function(req, res) {

            let promise = Contato.find().exec().then(
                function(contatos) {
                    res.json(contatos)
                }
            )
        }

        controller.obtemContato = function(req, res) {
            let _id = req.params.id;
            Contato.findById(_id).exec().then(
                function(contato) {
                    if (!contato) throw new Error ("Contato não encontrado")
                    res.json(contato)
                },
                function(erro) {
                    console.log(erro)
                    res.status(404).json(erro)
                }
            )
        }

        controller.removeContato = function(req, res) {
            let _id = req.params.id
            Contato.remove({"_id": _id}).exec().then(
                function() {
                    res.status(204).end() 
                },
                function(erro) { 
                    return console.error(erro)
                }
            )
        }

        controller.salvaContato = function(req, res) {
            /**   Um Model do Mongoose possui a função update , porém ela ape-
               nas atualiza o documento sem retorná-lo após a modificação. A função
               findByIdAndUpdate , além de atualizar, nos dá acesso ao documento
               atualizado. */

            let _id = req.body._id

            if (_id) {
                // IF = possui um id, é UPDATE
                Contato.findByIdAndUpdate(_id, req.body).exec().then(
                    function(contato) {
                        res.json(contato)
                    },
                    function(erro) {
                        console.error(erro)
                        res.status(500).json(erro)
                    }
                )
            } 
            else {
                // ELSE = não possui _id, é um INSERT
                Contato.create(req.body).then(
                    function(contato) {
                        res.status(200).json(contato)
                    },
                    function(erro) {
                        console.log(erro)
                        res.status(500).json(erro)
                    }
                )                
            }
        }

        return controller
    }

})()
{'fraction_non_alphanumeric': 0.09721588315837518, 'fraction_numerical': 0.005248744865358284, 'mean_word_length': 1.0881372081943783, 'pattern_counts': {'":': 1, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7217430', 'n_tokens_mistral': 1221, 'n_tokens_neox': 1125, 'n_words': 204}