Hi everyone,
Currently all whisk entities are stored in "whisks" collection in
couchdb. Most queries around these entities are of form [root
namespace, date] invoked against entity specific views.
GET
/local_whisks/_design/whisks.v2/_view/packages?descending=true&endkey=["guest",0]&reduce=false&startkey=["guest","",""]&limit=30
200
The views are computed by "inferring" the entity type [1] based on
document properties.This mode of querying works fine with couchdb
which provides "computed" views. However it poses problem with storage
system where query relies on declarative indexes.
Proposal
------------
Introduce 2 properties
1. 'entityType' - whose value is set to action/package/rile/trigger
etc at time of creation.
2. 'rootns' - Root namespace
These properties would be set at time of creation itself in
Controller. This would allow creating a declarative index for the
entities. For e.g. in Mongo terms we can have a single index
db.whisks.createIndex({entityType:1, rootns:1, updated:1}
This may also possibly allow us to have a single view in couchdb whose
structure would be
[entityType, rootns, date] = { .... } //docs properties would be
superset of properties included in views for
action/package/rile/trigger
Thoughts?
Chetan Mehrotra
[1]
var isPackage = function (doc) {
return (doc.binding !== undefined)
};
var isAction = function (doc) {
return (doc.exec !== undefined)
};
var isTrigger = function (doc) {
return (doc.exec === undefined && doc.binding === undefined &&
doc.parameters !== undefined)
};
var isRule = function (doc) {
return (doc.trigger !== undefined)
};