add putInfo method
This commit is contained in:
@@ -602,3 +602,22 @@ MBTiles.prototype.putGrid = function(z, x, y, data, callback) {
|
|||||||
if (++this._pending < 100) return this._commit(callback);
|
if (++this._pending < 100) return this._commit(callback);
|
||||||
else return callback(null);
|
else return callback(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MBTiles.prototype.putInfo = function(data, callback) {
|
||||||
|
if (typeof callback !== 'function') throw new Error('Callback needed');
|
||||||
|
if (!this.open) return callback(new Error('MBTiles not yet loaded'));
|
||||||
|
if (!this._isWritable) return callback(new Error('MBTiles not in write mode'));
|
||||||
|
|
||||||
|
// Valid keys.
|
||||||
|
var keys = [ 'name', 'type', 'description', 'version', 'formatter',
|
||||||
|
'bounds', 'center', 'minzoom', 'maxzoom' ];
|
||||||
|
for (var key in data) {
|
||||||
|
if (keys.indexOf(key) < 0) return callback("Can't set key " + key);
|
||||||
|
}
|
||||||
|
var stmt = this._db.prepare('REPLACE INTO metadata (name, value) VALUES (?, ?)');
|
||||||
|
stmt.on('error', callback);
|
||||||
|
for (var key in data) {
|
||||||
|
stmt.run(key, String(data[key]));
|
||||||
|
}
|
||||||
|
stmt.finalize(callback);
|
||||||
|
};
|
||||||
|
|||||||
+50
-3
@@ -49,14 +49,15 @@ exports['get metadata'] = function(beforeExit) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports['get/put metadata from empty file'] = function(beforeExit) {
|
exports['get/put metadata from empty file'] = function(beforeExit) {
|
||||||
var completed = false;
|
var completion = {};
|
||||||
|
|
||||||
new MBTiles(fixtures.empty, function(err, mbtiles) {
|
new MBTiles(fixtures.empty, function(err, mbtiles) {
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
|
completion.open = true;
|
||||||
|
|
||||||
mbtiles.getInfo(function(err, data) {
|
mbtiles.getInfo(function(err, data) {
|
||||||
completed = true;
|
|
||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
|
completion.info = true;
|
||||||
|
|
||||||
assert.deepEqual({
|
assert.deepEqual({
|
||||||
basename: "empty.mbtiles",
|
basename: "empty.mbtiles",
|
||||||
@@ -64,7 +65,53 @@ exports['get/put metadata from empty file'] = function(beforeExit) {
|
|||||||
id: "empty",
|
id: "empty",
|
||||||
scheme: "tms"
|
scheme: "tms"
|
||||||
}, data);
|
}, data);
|
||||||
})
|
|
||||||
|
mbtiles.putInfo({ version: '1.0.0' }, function(err) {
|
||||||
|
assert.ok(err);
|
||||||
|
assert.equal(err.message, 'MBTiles not in write mode');
|
||||||
|
completion.putFail = true;
|
||||||
|
|
||||||
|
mbtiles.startWriting(function(err) {
|
||||||
|
if (err) throw err;
|
||||||
|
completion.startWriting = true;
|
||||||
|
|
||||||
|
mbtiles.putInfo({ version: '1.0.0' }, function(err) {
|
||||||
|
if (err) throw err;
|
||||||
|
completion.written = true;
|
||||||
|
|
||||||
|
mbtiles.stopWriting(function(err) {
|
||||||
|
if (err) throw err;
|
||||||
|
completion.stopWriting = true;
|
||||||
|
|
||||||
|
mbtiles.getInfo(function(err, data) {
|
||||||
|
if (err) throw err;
|
||||||
|
completion.updatedInfo = true;
|
||||||
|
|
||||||
|
assert.deepEqual({
|
||||||
|
basename: "empty.mbtiles",
|
||||||
|
filesize: 16384,
|
||||||
|
id: "empty",
|
||||||
|
scheme: "tms",
|
||||||
|
version: "1.0.0"
|
||||||
|
}, data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeExit(function() {
|
||||||
|
assert.deepEqual(completion, {
|
||||||
|
info: true,
|
||||||
|
open: true,
|
||||||
|
putFail: true,
|
||||||
|
startWriting: true,
|
||||||
|
stopWriting: true,
|
||||||
|
updatedInfo: true,
|
||||||
|
written: true
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user