<commit_before>'use strict';

var express = require('express'),
    path = require('path'),
    router = express.Router(),
    unqlite = require('unqlite'),
    correio = require('../lib/correio'),
    db = new unqlite.Database(path.join(__dirname, '../db/cep.db')),
    cepRegex = /^(\d{5})\-?(\d{3})$/;

var closeDB = function(next) {
    db.close(function(err) {
        if (err)
            console.log('db.close', err);
    });
}

var respostaFinal = function(res, data, success) {
    success = success || false;
    data['success'] = success;
    res.send(data);
}

router.get('/', function(req, res) {
    res.send('<pre>Como usar: /cep/09715-295 ou /cep/09715295</pre>');
});

router.get('/:cep', function(req, res, next) {
    var rawcep,
        cep;

    cep = req.params.cep;
    if (cepRegex.test(cep)) {
        rawcep = cep.split('-').join('');

        // Abre conexao com o banco
        db.open(unqlite.OPEN_CREATE, function(err) {
            if (err) {
                closeDB();
                next(err);
            } else {
                // Localiza o cep
                db.fetch(rawcep, function(err, k, v) {
                    // Se não achou então...
                    if (err) {
                        console.log('db.fetch', err);
                        // Consulta no correio...
                        correio(rawcep, function(err, data) {
                            // Se achou então grava no banco...
                            if (data) {
                                db.store(rawcep, JSON.stringify(data), function(err, k, v) {
                                    if (err)
                                        console.log('db.store', err);
                                    else
                                        console.log('db.store - gravou', k);

                                    closeDB();
                                    respostaFinal(res, data, true);
                                });
                            // senão a consulta #fail
                            } else {
                                respostaFinal(res, {
                                    "msg": "cep não encontrado"
                                });
                            }
                        });
                    // achou!!
                    } else {
                        console.log('achou no banco...');
                        closeDB();
                        respostaFinal(res, JSON.parse(v), true);
                    }
                });
            }
        });
    } else {
        respostaFinal(res, {
            "msg": "cep inválido"
        });
    }
});

module.exports = router;<commit_msg>fix open and close db<commit_after>'use strict';

var express = require('express'),
    path = require('path'),
    router = express.Router(),
    unqlite = require('unqlite'),
    correio = require('../lib/correio'),
    cepRegex = /^(\d{5})\-?(\d{3})$/;

var DB = unqlite.Database,
    dbFile = path.join(__dirname, '../db/cep.db');

var closeDB = function(db) {
    db.close(function(err) {
        if (err)
            console.log('db.close', err);
        else
            console.log('db.close', 'fechadoo...');
    });
}

var respostaFinal = function(res, data, success) {
    success = success || false;
    data['success'] = success;
    res.send(data);
}

router.get('/', function(req, res) {
    res.send('<pre>Como usar: /cep/09715-295 ou /cep/09715295</pre>');
});

router.get('/:cep', function(req, res, next) {
    console.log('-------------------');

    var rawcep,
        cep,
        db;

    cep = req.params.cep;
    if (cepRegex.test(cep)) {

        rawcep = cep.split('-').join('');

        // Abre conexao com o banco
        db = new DB(dbFile);
        db.open(unqlite.OPEN_CREATE, function(err) {
            if (err) {
                closeDB(db);
                next(new Error('unqlite open'));
            } else {
                console.log('db.open', 'abriuuu...');
                // Localiza o cep no banco
                db.fetch(rawcep, function(err, k, v) {
                    // Se não achou então...
                    if (err) {
                        console.log('db.fetch', err);
                        // Consulta no correio...
                        correio(rawcep, function(err, data) {
                            // Se achou então grava no banco...
                            if (data) {
                                db.store(rawcep, JSON.stringify(data), function(err, k, v) {
                                    if (err)
                                        console.log('db.store', err);
                                    else
                                        console.log('db.store - gravou', k);

                                    closeDB(db);
                                    respostaFinal(res, data, true);
                                });
                            // senão a consulta #fail
                            } else {
                                closeDB(db);
                                respostaFinal(res, {
                                    "msg": "cep não encontrado"
                                });
                            }
                        });
                    // achou!!
                    } else {
                        console.log('achou no banco...');
                        closeDB(db);
                        respostaFinal(res, JSON.parse(v), true);
                    }
                });
            }
        });
    } else {
        respostaFinal(res, {
            "msg": "cep inválido"
        });
    }
});

module.exports = router;
{'fraction_non_alphanumeric': 0.1402116402116402, 'fraction_numerical': 0.006349206349206349, 'mean_word_length': 0.9794066317626527, 'pattern_counts': {'":': 4, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 14, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2702443', 'n_tokens_mistral': 1587, 'n_tokens_neox': 1491, 'n_words': 306}