v1.0.104: reset_contract + идемпотентность — очистка перед сравнением

This commit is contained in:
2026-06-22 08:35:54 +04:00
parent 82e587613e
commit c9a1f608ca
3 changed files with 34 additions and 2 deletions
+2 -2
View File
@@ -16,13 +16,13 @@
<cfelseif NOT len(supplementId)>
<cfset result.error = "supplement_id required (JSON body)">
<cfelse>
<!--- Идемпотентность: проверка что supplement ещё не обработан --->
<!--- Идемпотентность --->
<cfquery name="dupCheck" datasource="baza">
SELECT COUNT(*) as cnt FROM spec_events
WHERE supplement_id = <cfqueryparam value="#supplementId#" cfsqltype="cf_sql_varchar">
</cfquery>
<cfif dupCheck.cnt GT 0>
<cfset result = {ok: true, skipped: true, message: "supplement already processed", supplement_id: supplementId}>
<cfset result = {ok: true, skipped: true, message: "supplement already processed"}>
<cfelse>
<cftransaction>
<cfset seq = 0>
+3
View File
@@ -107,6 +107,9 @@ class Handler(BaseHTTPRequestHandler):
t0 = time.time()
try:
# 0. Сброс предыдущих результатов сравнения
httpx.get(f"{LUCEE_URL}/reset_contract.cfm?contract_id={cid}", timeout=10)
# 1. Список supplements
supps = self._lucee_query(
f"SELECT s.id, s.type, d.filename FROM supplements s "
+29
View File
@@ -0,0 +1,29 @@
<cfsetting showdebugoutput="no" enablecfoutputonly="true">
<cfheader name="Content-Type" value="application/json; charset=utf-8">
<cfparam name="url.contract_id" default="">
<cfset result = {ok: false, error: ""}>
<cftry>
<cfif NOT len(url.contract_id)>
<cfset result.error = "contract_id required">
<cfelse>
<cftransaction>
<cfquery datasource="baza">
DELETE FROM spec_current
WHERE contract_id = <cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">
</cfquery>
<cfquery datasource="baza">
DELETE FROM spec_events
WHERE contract_id = <cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">
</cfquery>
</cftransaction>
<cfset result = {ok: true, contract_id: url.contract_id}>
</cfif>
<cfcatch>
<cfset result = {ok: false, error: cfcatch.message}>
</cfcatch>
</cftry>
<cfoutput>#serializeJSON(result)#</cfoutput>