@@ -207,6 +207,7 @@ declare function hent:database-properties-generate(
207207 let $entity-type-names := map:keys ($definitions)
208208 let $range-path-indexes := json:array ()
209209 let $word-lexicons := json:array ()
210+ let $range-element-indexes := json:array ()
210211 let $_ :=
211212 for $entity-type-name in $entity-type-names
212213 let $entity-type := map:get ($definitions, $entity-type-name)
@@ -236,6 +237,22 @@ declare function hent:database-properties-generate(
236237 let $_ := map:put ($wl-map, "localname" , $word-lexicon-property)
237238 let $_ := map:put ($wl-map, "namespace-uri" , "" )
238239 return json:array-push ($word-lexicons, $wl-map)
240+ ,
241+ let $primary-key-property := map:get ($entity-type, "primaryKey" )
242+ where $primary-key-property
243+ return
244+ let $pk-map := json:object ()
245+ let $property := map:get ($properties, $primary-key-property)
246+ let $specified-datatype := esi:resolve-datatype ($model, $entity-type-name, $primary-key-property)
247+ let $datatype := esi:indexable-datatype ($specified-datatype)
248+ let $collation := head ( (map:get ($property, "collation" ), "http://marklogic.com/collation/en" ) )
249+ let $_ := map:put ($pk-map, "collation" , $collation)
250+ let $_ := map:put ($pk-map, "localname" , $primary-key-property)
251+ let $_ := map:put ($pk-map, "namespace-uri" , "" )
252+ let $_ := map:put ($pk-map, "range-value-positions" , fn:false ())
253+ let $_ := map:put ($pk-map, "scalar-type" , $datatype)
254+ let $_ := map:put ($pk-map, "invalid-values" , "reject" )
255+ return json:array-push ($range-element-indexes, $pk-map)
239256 )
240257 let $path-namespaces := json:array ()
241258 let $pn := json:object ()
@@ -246,5 +263,6 @@ declare function hent:database-properties-generate(
246263 let $_ := map:put ($database-properties, "path-namespace" , $path-namespaces)
247264 let $_ := map:put ($database-properties, "element-word-lexicon" , $word-lexicons)
248265 let $_ := map:put ($database-properties, "range-path-index" , $range-path-indexes)
266+ let $_ := map:put ($database-properties, "range-element-index" , $range-element-indexes)
249267 return xdmp:to-json ($database-properties)
250268};
0 commit comments