field_set, resourceRealm additional output

This commit is contained in:
msyu
2025-04-06 14:50:00 +03:00
parent ff330ce3ce
commit af6cb67cf8
4 changed files with 20 additions and 2 deletions
+1 -1
View File
@@ -51,7 +51,7 @@
//variables.framework.docs={};
variables.framework.docs.APIName="Deck API";
variables.framework.docs.APIVersion="0.078";
variables.framework.docs.APIVersion="0.079";
variables.framework.globalHeaders = structNew();
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
+11
View File
@@ -4,6 +4,7 @@
<!--- 20201114 v0.6 добавлен атрибут "container" for json--->
<!--- 20201201 v0.7 исправлен listOut--->
<!--- 20210326 v0.8 formatter --->
<!--- 20210326 v0.9 listOutKeepContent --->
<!--- Используется в селекте для структурирования списка полей. Выводит вместо себя список через запятую, экспортирует Map со структурами выражение+заголовок, с ключом, соответствующим имени колонки в селекте (ключ вычисляется регулярным выражением) --->
<cfif thisTag.executionMode is "end">
@@ -11,6 +12,7 @@
<cfparam name="ATTRIBUTES.titleMapOut" default=""/>
<cfparam name="ATTRIBUTES.lengthOut" default=""/>
<cfparam name="ATTRIBUTES.listOut" default=""/><!---возвращаемый список полей через запятую для селекта. Если не задан (чаще всего так), этот список возвращается в виде контента тега --->
<cfparam name="ATTRIBUTES.listOutKeepContent" default=false/><!--- указывает listOut не очищать контент --->
<cfparam name="thisTag.fieldsArray" type="array"/><!--- Вложенные теги field отдают сюда свои данные --->
@@ -42,6 +44,15 @@
<cfif len(ATTRIBUTES.listOut)>
<cfset "CALLER.#ATTRIBUTES.listOut#"=preserveSingleQuotes(list)/>
<cfset thisTag.generatedContent=""/>
</cfif>
<cfif len(ATTRIBUTES.listOut)><!--- *** некрасиво --->
<cfset "CALLER.#ATTRIBUTES.listOut#"=preserveSingleQuotes(list)/>
<cfif listOutKeepContent>
<cfset thisTag.generatedContent=preserveSingleQuotes(list)/>
<cfelse>
<cfset thisTag.generatedContent=""/>
</cfif>
<cfelse>
<cfset thisTag.generatedContent=preserveSingleQuotes(list)/>
</cfif>
+1
View File
@@ -37,6 +37,7 @@
<m:field>e.updater_id</m:field>
<m:field>u.login as updater_login</m:field>
<m:field>u.shortname as updater_shortname</m:field>
<m:field>(select cast(st.instance_data->>'params' as json)->>'resourceRealm' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as resourceRealm</m:field>
</m:field_set>
from instance e
left outer join specification_item i on (e.specification_item_id=i.specification_item_id)
+7 -1
View File
@@ -31,6 +31,7 @@
"instance_state_uid"={prefix="inr", type="guid"},
"is_deleted"={prefix="inr", type="string"},<!--- not bool --->
"suspended"={prefix="inr", type="string"},<!--- not bool --->
"resourceRealm"={prefix="inr", type="string"},
"is_test"={prefix="inr", type="boolean"},
"is_auxiliary"={prefix="inr", type="boolean"},
"explained_status"={prefix="inr", type="string"},
@@ -79,7 +80,10 @@
<!--- Такая бодяга. Кастомные сериализаторы не умеют вложенных структур (поразительно, или я не нашел как). Стандартный сериализатор не умеет выводить дату в ISO 8601. Приходится колхозить и форматировать на стороне БД (насилу подобрал формат). Также на стороне БД приходится конвертировать GUID, потому что драйвер pg jdbc его представляет как структуру из 2 чисел.
И то сказать, jsonb как-то странно сериализуется, в 3 поля, вместо одного Value
--->
<!--- ********* Внимание, ниже дублирование этого селекта! --->
<!--- ************ Внимание, ниже дублирование этого селекта! ************* --->
<cfquery name="local.qCnt" result="local.result">
select count(*) as cnt
from (
@@ -119,6 +123,7 @@
<m:field formatter=#request.castToBool#>(select st.is_test from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as is_test</m:field>
<m:field formatter=#request.castToBool#>coalesce((select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1),'false') as is_deleted</m:field><!--- attention it is not bool in state --->
<m:field formatter=#request.castToBool#>(select st.instance_data->>'suspended' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as suspended</m:field>
<m:field>(select cast(st.instance_data->>'params' as json)->>'resourceRealm' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as resourceRealm</m:field>
<m:field>(select to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as dt_state</m:field>
<m:field>
(case
@@ -196,6 +201,7 @@
<m:field formatter=#request.castToBool#>(select st.is_test from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as is_test</m:field>
<m:field formatter=#request.castToBool#>coalesce((select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1),'false') as is_deleted</m:field><!--- attention it is not bool in state --->
<m:field formatter=#request.castToBool#>(select st.instance_data->>'suspended' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as suspended</m:field>
<m:field>(select cast(st.instance_data->>'params' as json)->>'resourceRealm' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as resourceRealm</m:field>
<m:field>(select to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as dt_state</m:field>
<m:field>
(case