Commit a543b514 authored by preetwinder's avatar preetwinder Committed by Romain Courteaud

Add liststorage

parent 9d87cdf7
...@@ -152,7 +152,8 @@ ${JIOVERSION}: ${EXTERNALDIR}/URI.js \ ...@@ -152,7 +152,8 @@ ${JIOVERSION}: ${EXTERNALDIR}/URI.js \
${SRCDIR}/jio.storage/cryptstorage.js \ ${SRCDIR}/jio.storage/cryptstorage.js \
${SRCDIR}/jio.storage/fbstorage.js \ ${SRCDIR}/jio.storage/fbstorage.js \
${SRCDIR}/jio.storage/cloudooostorage.js \ ${SRCDIR}/jio.storage/cloudooostorage.js \
${SRCDIR}/jio.storage/nocapacitystorage.js ${SRCDIR}/jio.storage/nocapacitystorage.js \
${SRCDIR}/jio.storage/liststorage.js
@mkdir -p $(@D) @mkdir -p $(@D)
cat $^ > $@ cat $^ > $@
......
/*
* Copyright 2019, Nexedi SA
*
* This program is free software: you can Use, Study, Modify and Redistribute
* it under the terms of the GNU General Public License version 3, or (at your
* option) any later version, as published by the Free Software Foundation.
*
* You can also Link and Combine this program with other software covered by
* the terms of any of the Free Software licenses or any of the Open Source
* Initiative approved licenses and Convey the resulting work. Corresponding
* source of such a combination shall include the source code for all other
* software used.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See COPYING file for full licensing terms.
* See https://www.nexedi.com/licensing for rationale and options.
*/
/*jslint nomen: true*/
/*global Set*/
(function (jIO) {
"use strict";
function ListStorage(spec) {
this._sub_storage = jIO.createJIO(spec.sub_storage);
this._sub_storage_index = new Set();
}
ListStorage.prototype.get = function () {
return this._sub_storage.get.apply(this._sub_storage, arguments);
};
ListStorage.prototype.allAttachments = function () {
return this._sub_storage.allAttachments.apply(this._sub_storage, arguments);
};
ListStorage.prototype.post = function (value) {
var gadget = this;
return gadget._sub_storage.post(value)
.push(function (id) {
gadget._sub_storage_index.add(id);
return id;
});
};
ListStorage.prototype.put = function (id, value) {
var gadget = this;
return gadget._sub_storage.put(id, value)
.push(function (result) {
gadget._sub_storage_index.add(id);
return result;
});
};
ListStorage.prototype.remove = function (id) {
var gadget = this;
return gadget._sub_storage.remove(id)
.push(function (result) {
gadget._sub_storage_index.delete(id);
return result;
});
};
ListStorage.prototype.getAttachment = function () {
return this._sub_storage.getAttachment.apply(this._sub_storage, arguments);
};
ListStorage.prototype.putAttachment = function () {
return this._sub_storage.putAttachment.apply(this._sub_storage, arguments);
};
ListStorage.prototype.removeAttachment = function () {
return this._sub_storage.removeAttachment.apply(this._sub_storage,
arguments);
};
ListStorage.prototype.repair = function () {
return this._sub_storage.repair.apply(this._sub_storage, arguments);
};
ListStorage.prototype.hasCapacity = function (name) {
if (name === "list") {
return true;
}
};
ListStorage.prototype.buildQuery = function () {
var rows = [], i, ids = Array.from(this._sub_storage_index);
for (i = 0; i < ids.length; i += 1) {
rows.push({id: ids[i], value: {}});
}
return rows;
};
jIO.addStorage('list', ListStorage);
}(jIO));
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment