added glosses to entry API

This commit is contained in:
Oleg Belyaev 2025-03-21 19:48:27 +03:00
parent d8d24c1dc9
commit 24acee8378

View file

@ -22,8 +22,22 @@ declare function api:ment-index($db-lang as xs:string) {
(: Short entry info (only forms for now). Hash is used because URLs don't handle
some Unicode characters very well in this system :)
declare function api:entry-info-short($n as node())
as map(xs:string, xs:string) {
map{'id': string(hash($n/@xml:id)), 'xmlid': $n/@xml:id, 'form': $n/text()}
as map(xs:string, item()) {
map{'id': string(hash($n/@xml:id)),
'xmlid': string($n/@xml:id),
'form': $n/text()
}
};
declare function api:entry-info-long($n as node(), $db-lang as xs:string)
as map(xs:string, item()) {
map:merge(
(
api:entry-info-short($n),
map{'glosses': array:build(data(doc(`abaevdict_{$db-lang}/xml/{$n/@xml:id}.xml`)
/tei:entry[1]/tei:sense/(tei:sense|tei:sense/tei:sense|.)/tei:cit/tei:quote))}
)
)
};
(: Short language info -- for the language list :)
@ -168,8 +182,9 @@ declare %rest:path("{$db-lang}/api/entries/{$entry-id}")
%rest:GET
function api:entries($db-lang as xs:string,
$entry-id as xs:string) {
api:entry-info-short(
$lookup/tei:table[1]/tei:entry[string(hash(@xml:id))=$entry-id])
api:entry-info-long(
$lookup/tei:table[1]/tei:entry[string(hash(@xml:id))=$entry-id],
$db-lang)
};
0