Comparing version 0.0.2 to 0.0.3
module.exports = { | ||
GraphQL: require('./lib/GraphQL'), | ||
GraphQLFilter: require('./lib/GraphQLFilter'), | ||
MetaStore: require('./lib/MetaStore') | ||
MetaStore: require('./lib/MetaStore'), | ||
MultiMetaStore: require ('./lib/MultiMetaStore') | ||
}; |
@@ -68,2 +68,6 @@ var SEPARATOR_CHAR = ','; | ||
Query.prototype.hasChild = function (key) { | ||
return typeof this._children[key] !== 'undefined'; | ||
}; | ||
Query.prototype.getChild = function (key) { | ||
@@ -70,0 +74,0 @@ var keyRoot = this._getKeyRoot(key); |
var _ = require('lodash'); | ||
var GraphQL = require('./GraphQL'); | ||
var GraphQLFilter = require('./GraphQLFilter'); | ||
var Util = require('./Util'); | ||
@@ -52,5 +53,5 @@ var MetaStore = function() { | ||
MetaStore.prototype.query = function (queryString) { | ||
MetaStore.prototype.query = function (queryString, isParsed) { | ||
var compiled = this._getCompiled(); | ||
var query = GraphQL.parse(queryString); | ||
var query = isParsed ? queryString : GraphQL.parse(queryString); | ||
return GraphQLFilter.filter(compiled[query.getType()], query); | ||
@@ -61,31 +62,3 @@ }; | ||
if (this._compiled === undefined) { | ||
this._compiled = {}; | ||
var typeMap = {}; | ||
for (var extractorName in this._rawData) { | ||
for (var fileName in this._rawData[extractorName]) { | ||
var data = this._rawData[extractorName][fileName]; | ||
for (var i = 0; i < data.length; i++) { | ||
var item = data[i]; | ||
if (typeMap[item.type] === undefined) { | ||
typeMap[item.type] = {}; | ||
} | ||
if (typeMap[item.type][item.id] === undefined) { | ||
typeMap[item.type][item.id] = {}; | ||
} | ||
typeMap[item.type][item.id] = _.merge(typeMap[item.type][item.id], item, function(a, b) { | ||
if (_.isArray(a)) { | ||
return a.concat(b); | ||
} | ||
}); | ||
} | ||
} | ||
} | ||
for (var key in typeMap) { | ||
this._compiled[key] = []; | ||
for (var subKey in typeMap[key]) { | ||
this._compiled[key].push(typeMap[key][subKey]); | ||
} | ||
} | ||
this._compiled = Util.compressData(this._rawData, 2); | ||
} | ||
@@ -92,0 +65,0 @@ |
{ | ||
"name": "metastore", | ||
"description": "data metastore", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"homepage": "https://github.com/azulus/metastore", | ||
@@ -6,0 +6,0 @@ "authors": [ |
@@ -58,4 +58,4 @@ var MetaStore = require('../index').MetaStore; | ||
test.deepEqual(store.query('Module{id}'), [ | ||
{id: 'Header'}, | ||
{id: 'Pin'}, | ||
{id: 'Header'}, | ||
{id: 'PinImage'} | ||
@@ -72,8 +72,8 @@ ]); | ||
{ | ||
id: 'Header', | ||
view_types: ['fixed', 'relative'] | ||
}, | ||
{ | ||
id: 'Pin', | ||
view_types: ['summary', 'detailed', 'thumbnail', 'closeup', 'listItem'] | ||
}, | ||
{ | ||
id: 'Header', | ||
view_types: ['fixed', 'relative'] | ||
} | ||
@@ -101,2 +101,3 @@ ]); | ||
var exported = store.export(); | ||
store = new MetaStore(); | ||
store.import(exported); | ||
@@ -103,0 +104,0 @@ |
22072
11
696