062 instances filter fix
This commit is contained in:
@@ -82,7 +82,61 @@
|
||||
<cfquery name="local.qCnt" result="local.result">
|
||||
select count(*) as cnt
|
||||
from (
|
||||
select 1
|
||||
select
|
||||
<!--- из-за фильтраци по вложенному селекту нам нужны значения колонок --->
|
||||
<m:field_set titleMapOut="local.titleMap" lengthOut="local.fieldCount">
|
||||
<cfif structIsEmpty(filter)>
|
||||
<m:field>'' as placeholder</m:field>
|
||||
<cfelse>
|
||||
<m:field>to_char(e.dt_created, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as instance_config_dt_created</m:field>
|
||||
<m:field>to_char(e.dt_updated, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as instance_config_dt_updated</m:field>
|
||||
<m:field>e.instance_uid::text as instance_uid</m:field>
|
||||
<m:field>e.display_name</m:field>
|
||||
<m:field>e.service_id</m:field>
|
||||
<m:field>e.specification_item_id</m:field>
|
||||
<m:field formatter=#request.castToBool#>e.is_auxiliary</m:field>
|
||||
<m:field>d.contract_id</m:field>
|
||||
<m:field>i.specification_id</m:field>
|
||||
<m:field>s.specification</m:field>
|
||||
<m:field>i.quantity</m:field>
|
||||
<m:field>i.price</m:field>
|
||||
<m:field>v.svc</m:field>
|
||||
<m:field>v.code</m:field>
|
||||
<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 io.operation from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as last_operation</m:field>
|
||||
<m:field>(select io.instance_operation_uid::text from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as last_operation_uid</m:field>
|
||||
<m:field>(select io.submit_result from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as submit_result</m:field>
|
||||
<m:field>(select to_char(io.dt_start, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as operation_dt_start</m:field>
|
||||
<m:field>(select to_char(io.dt_finish, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as operation_dt_finish</m:field>
|
||||
<m:field>(select round(extract('epoch' from coalesce(io.dt_finish,CURRENT_TIMESTAMP)- io.dt_start),1) from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as duration</m:field>
|
||||
<m:field>(select case when io.is_successful then extract('epoch' from CURRENT_TIMESTAMP - coalesce(io.dt_finish,CURRENT_TIMESTAMP)) else 0 end from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as uptime</m:field>
|
||||
<m:field>(select to_char(io.dt_finish, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') from instance_operation io where io.instance_uid=e.instance_uid AND io.is_successful AND io.operation='create' order by dt_submit desc limit 1) as dt_deploy</m:field>
|
||||
<m:field formatter=#function(x){return (deserializeJson(x))}#>(select instance_data::text from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as instance_data</m:field><!--- *** операция выглядит очень накладно, но можно это поле в дельнейшем не выводить --->
|
||||
<m:field>(select st.instance_state_uid::text from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as instance_state_uid</m:field>
|
||||
<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#>(select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as is_deleted</m:field>
|
||||
<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 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
|
||||
when
|
||||
(select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'true' then 'deleted'
|
||||
when
|
||||
(select st.instance_data->>'suspended' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'true' then 'suspended'
|
||||
when
|
||||
(select COALESCE(st.instance_data->>'isDeleted','false') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'false' AND (select COALESCE(st.instance_data->>'suspended','false') from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) = 'false' then 'running'
|
||||
when
|
||||
not exists (select * from instance_operation o where o.instance_uid=e.instance_uid) then 'not configured'
|
||||
when
|
||||
not exists (select * from instance_state st where st.instance_uid=e.instance_uid) then 'not created'
|
||||
else null end
|
||||
) as explained_status
|
||||
</m:field>
|
||||
<m:field>(select max(version) from instance_state st where st.instance_uid=e.instance_uid) as version</m:field>
|
||||
</cfif>
|
||||
</m:field_set>
|
||||
from instance e
|
||||
join specification_item i on (e.specification_item_id=i.specification_item_id)
|
||||
join specification s on (i.specification_id=s.specification_id)
|
||||
@@ -101,6 +155,10 @@
|
||||
where 1=1 <m:filter_build filter=#filter#/>
|
||||
</cfquery>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<cfquery name="local.qRead" result="local.result">
|
||||
select
|
||||
<cfif listLen(local.fields)>#local.fields#<cfelse>*</cfif>
|
||||
@@ -123,10 +181,7 @@
|
||||
<m:field>v.code</m:field>
|
||||
<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 operation from instance_state st join instance_operation io on (st.instance_operation_uid=io.instance_operation_uid) where st.instance_uid=e.instance_uid order by version desc limit 1) as operation</m:field>
|
||||
<m:field>(select instance_operation_uid::text from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as instance_operation_uid</m:field> --->
|
||||
|
||||
<m:field>u.shortname as updater_shortname</m:field>
|
||||
<m:field>(select io.operation from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as last_operation</m:field>
|
||||
<m:field>(select io.instance_operation_uid::text from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as last_operation_uid</m:field>
|
||||
<m:field>(select io.submit_result from instance_operation io where io.instance_uid=e.instance_uid order by dt_submit desc limit 1) as submit_result</m:field><!--- *** последняя операция может быть неуспешной, и даже не отправленой --->
|
||||
@@ -141,8 +196,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#>(select st.instance_data->>'isDeleted' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as is_deleted</m:field>
|
||||
<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 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>(select st.instance_data->>'grafanaUrl' from instance_state st where st.instance_uid=e.instance_uid order by version desc limit 1) as grafana_url</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
|
||||
when
|
||||
@@ -223,7 +277,7 @@
|
||||
<cfreturn representationOf(out)/>
|
||||
|
||||
<cfcatch type="any">
|
||||
<cfreturn representationOf(cfcatch)/>
|
||||
<cfreturn representationOf(cfcatch).withStatus(500)/>
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
</cffunction>
|
||||
|
||||
Reference in New Issue
Block a user