xquery version "1.0"; (: $Id$ :) import module namespace request="http://exist-db.org/xquery/request"; (: import module namespace json="http://www.json.org"; :) import module namespace cmd-model = "http://spraakbanken.gu.se/clarin/xquery/model" at "xmldb:exist:///db/clarin/cmd-model.xqm"; declare function local:cmd-model() as item()* { let $operation := request:get-parameter("operation", ""), $cmd-index := request:get-parameter("q", ""), $cmd-index-path := if (fn:contains($cmd-index, ".")) then fn:translate($cmd-index, ".", "/") else $cmd-index, $format := request:get-parameter("format", $cmd-model:responseFormatXml), $collection-params := request:get-parameter("collection", $cmd-model:collectionRoot), $query-collections := if (matches($collection-params, "^root$") or $collection-params eq "") then $cmd-model:collectionRoot else $collection-params, $max-depth as xs:integer := xs:integer(request:get-parameter("maxdepth", 1)) return if ($operation eq $cmd-model:getCollections) then cmd-model:get-collections($query-collections, $format, $max-depth) else if ($operation eq $cmd-model:queryModel) then cmd-model:query-model($cmd-index-path, $query-collections, $format, $max-depth) else if ($operation eq $cmd-model:scanIndex) then let $filter := request:get-parameter("filter", ""), $start-item := request:get-parameter("startItem", 1), $max-items := request:get-parameter("maxItems", 50), $sort := request:get-parameter("sort", 'text') return cmd-model:scan-index($cmd-index-path, $query-collections, $format, $start-item, $max-items, $sort) else if ($operation eq $cmd-model:searchRetrieve) then let $cql-query := request:get-parameter("query", "MDGroup/Actors/Actor"), $start-item := request:get-parameter("startItem", 1), $max-items := request:get-parameter("maxItems", 50) return cmd-model:search-retrieve($cql-query, $query-collections, $format, xs:integer($start-item), xs:integer($max-items)) else Unknown operation }; local:cmd-model()