Merge pull request #60 from mapbox/geocoder-err-handling
Handle table not found error in getGeocoderData
This commit is contained in:
@@ -600,6 +600,7 @@ MBTiles.prototype.putInfo = function(data, callback) {
|
|||||||
// Implements carmen#getGeocoderData method.
|
// Implements carmen#getGeocoderData method.
|
||||||
MBTiles.prototype.getGeocoderData = function(type, shard, callback) {
|
MBTiles.prototype.getGeocoderData = function(type, shard, callback) {
|
||||||
return this._db.get('SELECT data FROM geocoder_data WHERE type = ? AND shard = ?', type, shard, function(err, row) {
|
return this._db.get('SELECT data FROM geocoder_data WHERE type = ? AND shard = ?', type, shard, function(err, row) {
|
||||||
|
if (err && err.code === 'SQLITE_ERROR' && err.errno === 1) return callback();
|
||||||
if (err) return callback(err);
|
if (err) return callback(err);
|
||||||
if (!row) return callback();
|
if (!row) return callback();
|
||||||
zlib.inflate(row.data, callback);
|
zlib.inflate(row.data, callback);
|
||||||
|
|||||||
+28
-13
@@ -13,12 +13,16 @@ var expected = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var tmp = require('os').tmpdir() + '/mbtiles-test-' + (+new Date).toString(16);
|
var tmp = require('os').tmpdir() + '/mbtiles-test-' + (+new Date).toString(16);
|
||||||
|
var tilesOnly;
|
||||||
var index;
|
var index;
|
||||||
var from;
|
var from;
|
||||||
var to;
|
var to;
|
||||||
|
|
||||||
try { fs.mkdirSync(tmp); } catch(err) { throw err; }
|
try { fs.mkdirSync(tmp); } catch(err) { throw err; }
|
||||||
|
|
||||||
|
tape('setup', function(assert) {
|
||||||
|
tilesOnly = new MBTiles(tmp + '/tilesOnly.mbtiles', assert.end);
|
||||||
|
});
|
||||||
tape('setup', function(assert) {
|
tape('setup', function(assert) {
|
||||||
index = new MBTiles(__dirname + '/fixtures/geocoder_data.mbtiles', assert.end);
|
index = new MBTiles(__dirname + '/fixtures/geocoder_data.mbtiles', assert.end);
|
||||||
});
|
});
|
||||||
@@ -37,6 +41,22 @@ tape('getGeocoderData', function(assert) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tape('getGeocoderData (nodata)', function(assert) {
|
||||||
|
index.getGeocoderData('term', 1e6, function(err, buffer) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(buffer, undefined);
|
||||||
|
assert.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
tape('getGeocoderData (no table)', function(assert) {
|
||||||
|
tilesOnly.getGeocoderData('term', 0, function(err, buffer) {
|
||||||
|
assert.ifError(err);
|
||||||
|
assert.equal(buffer, undefined);
|
||||||
|
assert.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
tape('putGeocoderData', function(assert) {
|
tape('putGeocoderData', function(assert) {
|
||||||
to.startWriting(function(err) {
|
to.startWriting(function(err) {
|
||||||
assert.ifError(err);
|
assert.ifError(err);
|
||||||
@@ -144,19 +164,14 @@ tape('geocoderCentroid USA', function(assert) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
tape('cleanup', function(assert) { tilesOnly.close(assert.end); });
|
||||||
|
tape('cleanup', function(assert) { index.close(assert.end); });
|
||||||
|
tape('cleanup', function(assert) { from.close(assert.end); });
|
||||||
|
tape('cleanup', function(assert) { to.close(assert.end); });
|
||||||
tape('cleanup', function(assert) {
|
tape('cleanup', function(assert) {
|
||||||
index.close(function(err) {
|
try { fs.unlinkSync(tmp + '/tilesOnly.mbtiles'); } catch(err) { throw err; }
|
||||||
if (err) throw err;
|
try { fs.unlinkSync(tmp + '/indexed.mbtiles'); } catch(err) { throw err; }
|
||||||
from.close(function(err) {
|
try { fs.rmdirSync(tmp); } catch(err) { throw err; }
|
||||||
if (err) throw err;
|
assert.end();
|
||||||
to.close(function(err) {
|
|
||||||
if (err) throw err;
|
|
||||||
try { fs.unlinkSync(tmp + '/indexed.mbtiles'); } catch(err) { throw err; }
|
|
||||||
try { fs.rmdirSync(tmp); } catch(err) { throw err; }
|
|
||||||
assert.end();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user