diff --git a/pyon/datastore/couchdb/couchdb_config.py b/pyon/datastore/couchdb/couchdb_config.py
index 92be764..49b7dd6 100644
--- a/pyon/datastore/couchdb/couchdb_config.py
+++ b/pyon/datastore/couchdb/couchdb_config.py
@@ -2,7 +2,6 @@
__author__ = 'Thomas R. Lennan, Michael Meisinger'
__license__ = 'Apache 2.0'
-
COUCHDB_CONFIGS = {
'object_store':{
'views': ['object','association']
@@ -13,6 +12,9 @@ COUCHDB_CONFIGS = {
'directory_store':{
'views': ['directory']
},
+ 'dm_datastore':{
+ 'views': ['posts']
+ },
'all':{
'views': ['object', 'resource', 'association', 'directory']
}
@@ -148,10 +150,25 @@ function(doc) {
}""",
},
},
+ 'posts':{
+ 'index':{
+ 'map':"""
+function(doc) {
+ if(doc.type=="post") {
+ emit([doc._id,0],doc)
+ } else if (doc.type == "comment") {
+ emit([doc.post, 1], doc)
+ }
+}"""
+ }
+ }
}
def get_couchdb_views(config):
- store_config = COUCHDB_CONFIGS[config]
+ if config in COUCHDB_CONFIGS:
+ store_config = COUCHDB_CONFIGS[config]
+ else:
+ store_config = COUCHDB_CONFIGS['all']
views = store_config['views']
res_views = {}
for view in views:
diff --git a/pyon/datastore/couchdb/couchdb_datastore.py b/pyon/datastore/couchdb/couchdb_datastore.py
index 648c46c..44d6ff0 100644
--- a/pyon/datastore/couchdb/couchdb_datastore.py
+++ b/pyon/datastore/couchdb/couchdb_datastore.py
@@ -574,7 +574,9 @@ class CouchDB_DataStore(DataStore):
def _define_views(self, datastore_name=""):
if not datastore_name:
datastore_name = self.datastore_name
- for design, viewdef in self.couchdb_views.iteritems():
+
+ views = get_couchdb_views(datastore_name)
+ for design, viewdef in views.iteritems():
self._define_view(design, viewdef, datastore_name=datastore_name)
def _define_view(self, design, viewdef, datastore_name=""):
@@ -591,8 +593,8 @@ class CouchDB_DataStore(DataStore):
if not datastore_name:
datastore_name = self.datastore_name
db = self.server[datastore_name]
-
- for design, viewdef in self.couchdb_views.iteritems():
+ views = get_couchdb_views(datastore_name)
+ for design, viewdef in views.iteritems():
for viewname in viewdef:
try:
rows = db.view("_design/%s/_view/%s" % (design, viewname))
ZGlmZiAtLWdpdCBhL3B5b24vZGF0YXN0b3JlL2NvdWNoZGIvY291Y2hkYl9jb25maWcucHkgYi9weW9uL2RhdGFzdG9yZS9jb3VjaGRiL2NvdWNoZGJfY29uZmlnLnB5CmluZGV4IDkyYmU3NjQuLjQ5YjdkZDYgMTAwNjQ0Ci0tLSBhL3B5b24vZGF0YXN0b3JlL2NvdWNoZGIvY291Y2hkYl9jb25maWcucHkKKysrIGIvcHlvbi9kYXRhc3RvcmUvY291Y2hkYi9jb3VjaGRiX2NvbmZpZy5weQpAQCAtMiw3ICsyLDYgQEAKIAogX19hdXRob3JfXyA9ICdUaG9tYXMgUi4gTGVubmFuLCBNaWNoYWVsIE1laXNpbmdlcicKIF9fbGljZW5zZV9fID0gJ0FwYWNoZSAyLjAnCi0KIENPVUNIREJfQ09ORklHUyA9IHsKICAgICAnb2JqZWN0X3N0b3JlJzp7CiAgICAgICAgICd2aWV3cyc6IFsnb2JqZWN0JywnYXNzb2NpYXRpb24nXQpAQCAtMTMsNiArMTIsOSBAQCBDT1VDSERCX0NPTkZJR1MgPSB7CiAgICAgJ2RpcmVjdG9yeV9zdG9yZSc6ewogICAgICAgICAndmlld3MnOiBbJ2RpcmVjdG9yeSddCiAgICAgfSwKKyAgICAnZG1fZGF0YXN0b3JlJzp7CisgICAgICAgICd2aWV3cyc6IFsncG9zdHMnXQorICAgIH0sCiAgICAgJ2FsbCc6ewogICAgICAgICAndmlld3MnOiBbJ29iamVjdCcsICdyZXNvdXJjZScsICdhc3NvY2lhdGlvbicsICdkaXJlY3RvcnknXQogICAgIH0KQEAgLTE0OCwxMCArMTUwLDI1IEBAIGZ1bmN0aW9uKGRvYykgewogfSIiIiwKICAgICAgICAgfSwKICAgICB9LAorICAgICdwb3N0cyc6eworICAgICAgICAnaW5kZXgnOnsKKyAgICAgICAgICAgICdtYXAnOiIiIgorZnVuY3Rpb24oZG9jKSB7CisJaWYoZG9jLnR5cGU9PSJwb3N0IikgeworCQllbWl0KFtkb2MuX2lkLDBdLGRvYykKKwl9IGVsc2UgaWYgKGRvYy50eXBlID09ICJjb21tZW50IikgeworCQllbWl0KFtkb2MucG9zdCwgMV0sIGRvYykKKwl9Cit9IiIiCisgICAgICAgIH0KKyAgICB9CiB9CiAKIGRlZiBnZXRfY291Y2hkYl92aWV3cyhjb25maWcpOgotICAgIHN0b3JlX2NvbmZpZyA9IENPVUNIREJfQ09ORklHU1tjb25maWddCisgICAgaWYgY29uZmlnIGluIENPVUNIREJfQ09ORklHUzoKKyAgICAgICAgc3RvcmVfY29uZmlnID0gQ09VQ0hEQl9DT05GSUdTW2NvbmZpZ10KKyAgICBlbHNlOgorICAgICAgICBzdG9yZV9jb25maWcgPSBDT1VDSERCX0NPTkZJR1NbJ2FsbCddCiAgICAgdmlld3MgPSBzdG9yZV9jb25maWdbJ3ZpZXdzJ10KICAgICByZXNfdmlld3MgPSB7fQogICAgIGZvciB2aWV3IGluIHZpZXdzOgpkaWZmIC0tZ2l0IGEvcHlvbi9kYXRhc3RvcmUvY291Y2hkYi9jb3VjaGRiX2RhdGFzdG9yZS5weSBiL3B5b24vZGF0YXN0b3JlL2NvdWNoZGIvY291Y2hkYl9kYXRhc3RvcmUucHkKaW5kZXggNjQ4YzQ2Yy4uNDRkNmZmMCAxMDA2NDQKLS0tIGEvcHlvbi9kYXRhc3RvcmUvY291Y2hkYi9jb3VjaGRiX2RhdGFzdG9yZS5weQorKysgYi9weW9uL2RhdGFzdG9yZS9jb3VjaGRiL2NvdWNoZGJfZGF0YXN0b3JlLnB5CkBAIC01NzQsNyArNTc0LDkgQEAgY2xhc3MgQ291Y2hEQl9EYXRhU3RvcmUoRGF0YVN0b3JlKToKICAgICBkZWYgX2RlZmluZV92aWV3cyhzZWxmLCBkYXRhc3RvcmVfbmFtZT0iIik6CiAgICAgICAgIGlmIG5vdCBkYXRhc3RvcmVfbmFtZToKICAgICAgICAgICAgIGRhdGFzdG9yZV9uYW1lID0gc2VsZi5kYXRhc3RvcmVfbmFtZQotICAgICAgICBmb3IgZGVzaWduLCB2aWV3ZGVmIGluIHNlbGYuY291Y2hkYl92aWV3cy5pdGVyaXRlbXMoKToKKworICAgICAgICB2aWV3cyA9IGdldF9jb3VjaGRiX3ZpZXdzKGRhdGFzdG9yZV9uYW1lKQorICAgICAgICBmb3IgZGVzaWduLCB2aWV3ZGVmIGluIHZpZXdzLml0ZXJpdGVtcygpOgogICAgICAgICAgICAgc2VsZi5fZGVmaW5lX3ZpZXcoZGVzaWduLCB2aWV3ZGVmLCBkYXRhc3RvcmVfbmFtZT1kYXRhc3RvcmVfbmFtZSkKIAogICAgIGRlZiBfZGVmaW5lX3ZpZXcoc2VsZiwgZGVzaWduLCB2aWV3ZGVmLCBkYXRhc3RvcmVfbmFtZT0iIik6CkBAIC01OTEsOCArNTkzLDggQEAgY2xhc3MgQ291Y2hEQl9EYXRhU3RvcmUoRGF0YVN0b3JlKToKICAgICAgICAgaWYgbm90IGRhdGFzdG9yZV9uYW1lOgogICAgICAgICAgICAgZGF0YXN0b3JlX25hbWUgPSBzZWxmLmRhdGFzdG9yZV9uYW1lCiAgICAgICAgIGRiID0gc2VsZi5zZXJ2ZXJbZGF0YXN0b3JlX25hbWVdCi0KLSAgICAgICAgZm9yIGRlc2lnbiwgdmlld2RlZiBpbiBzZWxmLmNvdWNoZGJfdmlld3MuaXRlcml0ZW1zKCk6CisgICAgICAgIHZpZXdzID0gZ2V0X2NvdWNoZGJfdmlld3MoZGF0YXN0b3JlX25hbWUpCisgICAgICAgIGZvciBkZXNpZ24sIHZpZXdkZWYgaW4gdmlld3MuaXRlcml0ZW1zKCk6CiAgICAgICAgICAgICBmb3Igdmlld25hbWUgaW4gdmlld2RlZjoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJvd3MgPSBkYi52aWV3KCJfZGVzaWduLyVzL192aWV3LyVzIiAlIChkZXNpZ24sIHZpZXduYW1lKSkK