[#51,backend/memory][s]: simple createDataset method to create in-memory dataset from raw array of hashes (and optional other info).
This commit is contained in:
parent
995a053400
commit
cb81fe87af
@ -2,6 +2,43 @@ this.recline = this.recline || {};
|
||||
this.recline.Backend = this.recline.Backend || {};
|
||||
|
||||
(function($, my) {
|
||||
// ## createDataset
|
||||
//
|
||||
// Convenience function to create a simple 'in-memory' dataset in one step.
|
||||
//
|
||||
// @param data: list of hashes for each document/row in the data ({key:
|
||||
// value, key: value})
|
||||
// @param fields: (optional) list of field hashes (each hash defining a hash
|
||||
// as per recline.Model.Field). If fields not specified they will be taken
|
||||
// from the data.
|
||||
// @param metadata: (optional) dataset metadata - see recline.Model.Dataset.
|
||||
// If not defined (or id not provided) id will be autogenerated.
|
||||
my.createDataset = function(data, fields, metadata) {
|
||||
if (!metadata) {
|
||||
var metadata = {};
|
||||
}
|
||||
if (!metadata.id) {
|
||||
metadata.id = String(Math.floor(Math.random() * 100000000) + 1);
|
||||
}
|
||||
var backend = recline.Model.backends['memory'];
|
||||
var datasetInfo = {
|
||||
documents: data,
|
||||
metadata: metadata
|
||||
};
|
||||
if (fields) {
|
||||
datasetInfo.fields = fields;
|
||||
} else {
|
||||
if (data) {
|
||||
datasetInfo.fields = _.keys(data[0]);
|
||||
}
|
||||
}
|
||||
backend.addDataset(datasetInfo);
|
||||
var dataset = new recline.Model.Dataset({id: metadata.id}, 'memory');
|
||||
dataset.fetch();
|
||||
return dataset;
|
||||
};
|
||||
|
||||
|
||||
// ## Memory Backend - uses in-memory data
|
||||
//
|
||||
// To use it you should provide in your constructor data:
|
||||
|
||||
@ -25,6 +25,17 @@ function makeBackendDataset() {
|
||||
return dataset;
|
||||
}
|
||||
|
||||
test('Memory Backend: createDataset', function () {
|
||||
var dataset = recline.Backend.createDataset(memoryData.documents, memoryData.fields, memoryData.metadata);
|
||||
equal(memoryData.metadata.id, dataset.id);
|
||||
});
|
||||
|
||||
test('Memory Backend: createDataset 2', function () {
|
||||
var dataset = recline.Backend.createDataset(memoryData.documents);
|
||||
dataset.query();
|
||||
equal(memoryData.documents.length, dataset.currentDocuments.length);
|
||||
});
|
||||
|
||||
test('Memory Backend: basics', function () {
|
||||
var dataset = makeBackendDataset();
|
||||
expect(3);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user