105 instance_ls optimization fixes

This commit is contained in:
msyu
2025-05-15 16:18:23 +03:00
parent 9615725498
commit b5972a2094
3 changed files with 24 additions and 16 deletions
+2 -1
View File
@@ -51,7 +51,8 @@
//variables.framework.docs={};
variables.framework.docs.APIName="Deck API";
variables.framework.docs.APIVersion="0.104";
variables.framework.docs.APIVersion="0.105"; /*$ git config --global --unset user.password*/
variables.framework.globalHeaders = structNew();
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
+3 -2
View File
@@ -44,6 +44,8 @@
<m:field>
(case
when
not exists (select * from instance_state st where st.instance_uid=e.instance_uid) then 'not created'
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
@@ -52,8 +54,7 @@
(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->>'isSuspended','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>
+19 -13
View File
@@ -32,7 +32,7 @@
"instance_data"={prefix="inr", type="string"},
"instance_state_uid"={prefix="inr", type="guid"},
"is_deleted"={prefix="inr", type="string"},<!--- not bool --->
"suspended"={prefix="inr", type="string"},<!--- not bool --->
"is_suspended"={prefix="inr", type="string"},<!--- not bool --->
"resource_realm"={prefix="inr", type="string"},
"operation_is_in_progress"={prefix="inr", type="boolean"},
"operation_is_pending"={prefix="inr", type="boolean"},
@@ -40,7 +40,9 @@
"is_auxiliary"={prefix="inr", type="boolean"},
"explained_status"={prefix="inr", type="string"},
"dt_state"={prefix="inr", type="date"},
"version"={prefix="inr", type="integer"}
"version"={prefix="inr", type="integer"}<!--- ,
"io_instance_uid"={prefix="inr", type="integer"},
"st_instance_uid"={prefix="inr", type="integer"} --->
}
/>
@@ -171,15 +173,19 @@
<m:field>st.instance_state_uid::text as instance_state_uid</m:field>
<m:field formatter=#request.castToBool#>st.is_test as is_test</m:field>
<m:field formatter=#request.castToBool#>coalesce(st.instance_data->>'isDeleted','false') as is_deleted</m:field><!--- attention it is not bool in state --->
<m:field formatter=#request.castToBool#>st.instance_data->>'isSuspended' as suspended</m:field>
<m:field formatter=#request.castToBool#>st.instance_data->>'isSuspended' as is_suspended</m:field>
<m:field>cast(st.instance_data->>'params' as json)->>'resourceRealm' as resource_realm</m:field>
<m:field>to_char(st.dt_state, 'YYYY-MM-DD"T"HH24:MI:SS.FF3TZHTZM') as dt_state</m:field>
<!--- <m:field>io.instance_uid::text as io_instance_uid</m:field>
<m:field>st.instance_uid::text as st_instance_uid</m:field> --->
<m:field>(case
when st.instance_uid IS NULL then 'not created'
when st.is_deleted = 'true' then 'deleted'
when st.is_suspended = 'true' then 'suspended'
/*when coalesce(st.is_deleted,'false') = 'false' AND coalesce(st.is_suspended, 'false') = 'false' then 'running'*/
when coalesce(st.is_deleted,'false') = 'false' AND coalesce(st.is_suspended, 'false') = 'false' then 'running'
when io.instance_uid IS NULL then 'not configured'
when st.instance_uid IS NULL then 'not created'
when io.instance_uid IS NULL then 'not configured'
else null end
) as explained_status</m:field>
<m:field>st.version</m:field>
@@ -209,12 +215,12 @@
,(ist.instance_data->>'isDeleted') as is_deleted
,ist.instance_data
from instance_state ist join (select instance_uid, max(version) as version from instance_state group by 1) lastv
on (ist.instance_uid=lastv.instance_uid AND ist.version=lastv.version) ) st
on (st.instance_uid=e.instance_uid)
on (ist.instance_uid=lastv.instance_uid AND ist.version=lastv.version) ) st
on (e.instance_uid=st.instance_uid)
left outer join (select o.instance_operation_uid, o.instance_uid, o.operation, o.dt_submit, o.submit_result, o.dt_start, o.dt_finish, o.is_successful
from instance_operation o join (select instance_uid, max(dt_submit) as dt_submit from instance_operation group by 1) lastv
on (o.instance_uid=lastv.instance_uid AND o.dt_submit=lastv.dt_submit) ) io
on (e.instance_uid=io.instance_uid)
on (o.instance_uid=lastv.instance_uid AND o.dt_submit=lastv.dt_submit) ) io
on (e.instance_uid=io.instance_uid)
where s.specification_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.specificationId#/>
<cfif len(arguments.search)>
AND (
@@ -245,12 +251,12 @@
,(ist.instance_data->>'isDeleted') as is_deleted
,ist.instance_data
from instance_state ist join (select instance_uid, max(version) as version from instance_state group by 1) lastv
on (ist.instance_uid=lastv.instance_uid AND ist.version=lastv.version) ) st
on (st.instance_uid=e.instance_uid)
on (ist.instance_uid=lastv.instance_uid AND ist.version=lastv.version) ) st
on (e.instance_uid=st.instance_uid)
left outer join (select o.instance_operation_uid, o.instance_uid, o.operation, o.dt_submit, o.submit_result, o.dt_start, o.dt_finish, o.is_successful
from instance_operation o join (select instance_uid, max(dt_submit) as dt_submit from instance_operation group by 1) lastv
on (o.instance_uid=lastv.instance_uid AND o.dt_submit=lastv.dt_submit) ) io
on (e.instance_uid=io.instance_uid)
on (o.instance_uid=lastv.instance_uid AND o.dt_submit=lastv.dt_submit) ) io
on (e.instance_uid=io.instance_uid)
where s.specification_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.specificationId#/><!--- *** make project entity --->
<!--- u.usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value=#arguments.usrId#/> --->
<cfif len(arguments.search)>