87 lines
3.9 KiB
Plaintext
87 lines
3.9 KiB
Plaintext
<cfcomponent extends="taffy.core.resource" taffy:uri="/instances/default/{svcId}" hint="template for default instance">
|
|
|
|
<cfsilent>
|
|
<cfimport prefix="m" taglib="../lib"/>
|
|
<cfset this.helper=CreateObject("component","lib.rest_api_helper")/>
|
|
</cfsilent>
|
|
|
|
<cffunction name="get" hint="Шаблон экземпляра"><!--- *** TODO проверка принадлежности тенанту --->
|
|
<cfargument name="svcId" type="string" required=true hint="type:integer"/>
|
|
<!--- <cfargument name="usrId" type="string" hint="type:integer; no need to provide this argument in request, it is injected by IAM"/> ---><!--- arguments.usrId неявно вбрасывается из Application.cfm --->
|
|
|
|
<cftry>
|
|
<cfset this.helper.validateField(arguments, "svcId", "integer")/>
|
|
<cfcatch type="invalidParamValue">
|
|
<cfreturn representationOf(this.helper.formatBadRequestError(cfcatch)).withStatus(400)/>
|
|
</cfcatch>
|
|
</cftry>
|
|
|
|
<cfquery name="local.qSvc" result="local.result">
|
|
select
|
|
<m:field_set titleMapOut="local.realmTitleMap" lengthOut="local.realmFieldCount">
|
|
<m:field>s.svc_id</m:field>
|
|
<m:field>s.svc</m:field>
|
|
<m:field>s.descr</m:field>
|
|
<m:field>s.man</m:field>
|
|
</m:field_set>
|
|
from svc s
|
|
where s.svc_id=<cfqueryparam cfsqltype="CF_SQL_INTEGER" value=#arguments.svcId#/>
|
|
order by 1
|
|
</cfquery>
|
|
|
|
<!--- <cfquery name="local.qAvailableResourceRealm" result="local.result">
|
|
select
|
|
<m:field_set titleMapOut="local.realmTitleMap" lengthOut="local.realmFieldCount">
|
|
<m:field>r.resource_realm_id</m:field>
|
|
<m:field>r.resource_realm_type_id</m:field>
|
|
<m:field>r.resource_realm</m:field>
|
|
</m:field_set>
|
|
from resource_realm r
|
|
join resource_realm_type t on (r.resource_realm_type_id=t.resource_realm_type_id)
|
|
/*left outer join resource_realm p on (r.parent_id=p.resource_realm_id)*/
|
|
join resource_realm_access a on
|
|
(r.resource_realm_id=a.resource_realm_id
|
|
AND a.contract_id=<cfqueryparam cfsqltype="CF_SQL_INTEGER" value=#arguments.contractId#/>
|
|
AND a.is_enabled)
|
|
join svc s on r.resource_realm_type_id=s.resource_realm_type_id
|
|
where s.svc_id=<cfqueryparam cfsqltype="CF_SQL_INTEGER" value=#arguments.svcId#/>
|
|
order by 1
|
|
</cfquery> --->
|
|
|
|
<!--- <cfset var instance = {
|
|
"svcId":"#arguments.svcId*1#",
|
|
"displayName":"#generateDefaultName(arguments.svcId,arguments.usrId)#",
|
|
"descr":""
|
|
}/> --->
|
|
|
|
|
|
<cfset var out = structNew("linked")/>
|
|
<cfset "out.instance.svcId"="#arguments.svcId*1#"/>
|
|
<cfset "out.instance.svc"="#local.qSvc.svc#"/>
|
|
<cfset "out.instance.displayName"="#generateDefaultName(arguments.svcId,arguments.usrId)#"/>
|
|
<cfset "out.instance.descr"="#local.qSvc.descr#"/>
|
|
<cfset "out.instance.man"="#local.qSvc.man#"/>
|
|
|
|
<!--- <cfset var out = structCopy(svc)/> ---><!--- *** иначе, видимо, циклическая ссылка, если мы еще скопируем это внутрь структуры --->
|
|
|
|
<!--- <cfset "out.instance" = instance/> --->
|
|
|
|
<!--- <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))/>
|
|
</cfloop> --->
|
|
|
|
<cfset "out.queryDurationMs"=getTickCount() - request.startTickCount/>
|
|
<cfset "out.runDurationMs"=getTickCount() - request.startTickCount/>
|
|
<cfreturn representationOf(out) />
|
|
</cffunction>
|
|
|
|
<!--- хотя такая зависимость очень не нравится своим направлением, как бы задом наперед--->
|
|
<cffunction name="generateDefaultName">
|
|
<cfargument name="service_id" type="numeric"/>
|
|
<cfargument name="usr_id" type="numeric"/>
|
|
|
|
<cfreturn CreateObject("component", "instance_ls").generateDefaultName(arguments.service_id,arguments.usr_id)/>
|
|
</cffunction>
|
|
|
|
</cfcomponent> |