@@ -96,13 +96,17 @@ abstract class SimpleHandler extends DocumentHandler {
9696 provider : DocumentProvider )(implicit transid : TransactionId , ec : ExecutionContext ): Future [Seq [JsObject ]] = {
9797 // Query result from CouchDB have below object structure with actual result in `value` key
9898 // So transform the result to confirm to that structure
99- val viewResult = JsObject (
100- " id" -> js.fields(" _id" ),
101- " key" -> createKey(ddoc, view, startKey, js),
102- " value" -> computeView(ddoc, view, js))
99+ val value = computeView(ddoc, view, js)
100+ val viewResult = JsObject (" id" -> js.fields(" _id" ), " key" -> createKey(ddoc, view, startKey, js), " value" -> value)
103101
104- val result = if (includeDocs) JsObject (viewResult.fields + (" doc" -> js)) else viewResult
105- Future .successful(Seq (result))
102+ if (includeDocs) value.fields.get(" _id" ) match {
103+ case Some (JsString (id)) if id != js.fields(" _id" ) =>
104+ provider.get(DocId (id)).map { doc =>
105+ Seq (JsObject (viewResult.fields + (" doc" -> doc.getOrElse(js))))
106+ }
107+ case _ =>
108+ Future .successful(Seq (JsObject (viewResult.fields + (" doc" -> js))))
109+ } else Future .successful(Seq (viewResult))
106110 }
107111
108112 /**
@@ -207,7 +211,7 @@ object WhisksHandler extends SimpleHandler {
207211 val FULL_NAME = " fullname"
208212 private val commonFields = Set (" namespace" , " name" , " version" , " publish" , " annotations" , " updated" )
209213 private val actionFields = commonFields ++ Set (" limits" , " exec.binary" )
210- private val actionVersionFields = commonFields ++ Set (" _id" )
214+ private val actionVersionFields = commonFields ++ Set (" _id" , " id " )
211215 private val packageFields = commonFields ++ Set (" binding" )
212216 private val packagePublicFields = commonFields
213217 private val ruleFields = commonFields
@@ -302,12 +306,9 @@ object WhisksHandler extends SimpleHandler {
302306 }
303307
304308 private def computeActionVersionsView (js : JsObject ): JsObject = {
305- val publish = annotationValue(js, " publish" , { v =>
306- v.convertTo[Boolean ]
307- }, true )
308-
309309 val base = js.fields.filterKeys(actionVersionFields).toMap
310- JsObject (base + (" publish" -> publish.toJson))
310+ val defaultId = js.fields(" namespace" ) + " /" + js.fields(" name" ) + " /default"
311+ JsObject (base + (" _id" -> JsString (defaultId), " id" -> js.fields(" _id" )))
311312 }
312313}
313314
0 commit comments