119 instance dependencies

This commit is contained in:
msyu
2025-07-01 18:19:34 +03:00
parent 13e1b5cbe5
commit 8262ade423
3 changed files with 61 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.118"; /*$ git config --global --unset user.password*/
variables.framework.docs.APIVersion="0.119"; /*$ git config --global --unset user.password*/
variables.framework.globalHeaders = structNew();
+59
View File
@@ -179,7 +179,65 @@
AND 1=0
</cfif>
order by so.svc_operation_id
</cfquery>
<!--- Проблема зависимостей. Чтобы их увидеть, нам нужно состояние, а его нет в реляционном виде.
Значит, придется парсить стейт
но чтобы получить все сервисы, которые зависят от данного, придется им отпарсить все стейты, что нереально
Значит, придется заняться нормализаций стейта (приведением в реляционный вид) - впрочем, ничего сильно сложного в этом нет
А есть смысл делать это в одну строну? наверно, есть - чтобы не забираться в операцию
--->
<!--- видимо, достаточно нам параметров операции create... но можно и все параметры перебрать --->
<cfquery name="local.qCfsParam" result="local.result">
select
p.svc_operation_cfs_param
,p.label
,p.descr
,r.svc_id as ref_svc_id
,r.svc as ref_svc
,r.code as ref_code
from svc_operation_cfs_param p
join svc_operation o on (p.svc_operation_id=o.svc_operation_id)
join svc on (o.svc_id=svc.svc_id)
join svc r on (p.ref_svc_id=r.svc_id)
where svc.svc_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#qInstance.service_id#" null=#!isValid('integer',qInstance.service_id)#/>
AND o.operation='create'
</cfquery>
<cfset var dependencies=[]/>
<!--- <cfset var dependencies=#local.qCfsParam#/> --->
<cfloop query="local.qCfsParam">
<cfset var paramName = this.helper.snake2camel(local.qCfsParam.svc_operation_cfs_param)/>
<cfset var instanceData="#deserializeJson(qCurrentState.instance_data)#"/>
<cfif structKeyExists(instanceData, "params") AND structKeyExists(instanceData.params, paramName)>
<cfset var refKey = structFind(instanceData.params, paramName)/>
<cfif isValid("guid",refKey)>
<!--- *** нужно укрепить изоляцию и проконтролировать принадлежность инстанса данному тенанту --->
<cfquery name="qDependency">
select e.display_name, e.is_auxiliary
from instance e
where e.instance_uid = <cfqueryparam cfsqltype="cf_sql_other" value="#refKey#" null=#!isValid('guid',refKey)#/>
</cfquery>
<cfset var rec = {
"param":"#svc_operation_cfs_param#",
"descr":"#descr#",
"svcId":#ref_svc_id#,
"svc":"#ref_svc#",
"code":"#ref_code#",
"label":"#label#",
"uid":"#refKey#",
"displayName":"#qDependency.display_name#",
"isAuxiliary": #request.castToBool(qDependency.is_auxiliary)#
}/>
<cfset arrayAppend(dependencies, rec)/>
</cfif>
</cfif>
</cfloop>
<!--- ---------------------------------------------------------------------------------- --->
<cfset var out=structNew("linked")/>
@@ -285,6 +343,7 @@
<cfset arrayAppend(out.instance.availableOperations, this.helper.appendRecord(structNew("linked"), "", local.availableOperationTitleMap, local.qAvailableOperation, this.helper.snake2camel))/>
</cfloop>
<cfset "out.instance.dependencies"=#dependencies#/>
<!--- <cfset "out.instance.availableResourceRealms"=[]/>
<cfloop query=#local.qAvailableResourceRealm#>
<cfset arrayAppend(out.instance.availableResourceRealms, this.helper.appendRecord(structNew("linked"), "", local.realmTitleMap, local.qAvailableResourceRealm, this.helper.snake2camel))/>
+1 -1
View File
@@ -102,7 +102,7 @@
<m:field formatter=#request.castToBool#>p.is_sensitive</m:field>
</m:field_set>
from svc_operation_cfs_param p
where p.svc_operation_id=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.svcOperationId#" null=#!isValid('integer',arguments.svcOperationId)#/>
where p.svc_operation_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.svcOperationId#" null=#!isValid('integer',arguments.svcOperationId)#/>
order by p.sort, p.svc_operation_cfs_param_id
</cfquery>