module namespace search = 'http://ossetic-studies.org/ns/abaevdict-site/search'; import module namespace abv-m = 'http://ossetic-studies.org/ns/abaevdict-mod' at '../abv-mod.xqm'; import module namespace entry = 'http://ossetic-studies.org/ns/abaevdict-site/entrypoints' at './restx_entrypoints.xq'; (: =============================================================== :) (: ======================= SEARCH ENTRYPOINT ===================== :) (: =============================================================== :) declare %rest:path("/search/{$path=.+}") %rest:GET function search:search-default($path as xs:string) { web:forward(`/en/search/{$path}`) }; declare %rest:path("{$lang}/search/new") %rest:query-param("searchType", "{$searchType}", 'full') %rest:query-param("searchQuery", "{$searchQuery}") %output:method("html") %output:html-version('5') function search:search($lang, $searchType, $searchQuery) { let $sd := abv-m:search($lang,$searchType,$searchQuery) let $r1 := session:set('searchType', $searchType) let $r2 := session:set('searchQuery', $searchQuery) let $r3 := session:set('searchN', 1) let $r4 := session:set('searchData', $sd) return if(array:size($sd) > 0) then entry:by-id($lang, $sd(1)('entry'), '') else web:redirect('../search/clear') }; declare %rest:path("{$lang}/search/next") %output:method("html") %output:html-version('5') function search:search-next($lang) { let $n as xs:integer := session:get('searchN')+1 let $r1 := session:set('searchN', $n) let $sd := session:get('searchData') return entry:by-id($lang, $sd($n)('entry'), ()) }; declare %rest:path("{$lang}/search/prev") %output:method("html") %output:html-version('5') function search:search-prev($lang) { let $n as xs:integer := session:get('searchN')-1 let $r1 := session:set('searchN', $n) let $sd := session:get('searchData') return entry:by-id($lang, $sd($n)('entry'), ()) }; declare %rest:path("{$lang}/search/position") %rest:query-param("p", "{$p}") %output:method("html") %output:html-version('5') function search:search-position($lang, $p as xs:integer) { let $r1 := session:set('searchN', $p) let $sd := session:get('searchData') return entry:by-id($lang, $sd($p)('entry'), ()) }; declare %rest:path("{$lang}/search/clear") %output:method("html") %output:html-version('5') function search:clearSearch($lang) { let $r1 := session:delete('searchType') let $r2 := session:delete('searchQuery') let $r3 := session:delete('searchN') let $r4 := session:delete('searchData') return web:redirect('../dict') };