57 lines
2.1 KiB
Plaintext
57 lines
2.1 KiB
Plaintext
<cfsetting showdebugoutput="no" enablecfoutputonly="true">
|
|
<cfheader name="Content-Type" value="application/json; charset=utf-8">
|
|
<cfheader name="Access-Control-Allow-Origin" value="*">
|
|
|
|
<cfif cgi.request_method EQ "OPTIONS"><cfoutput>OK</cfoutput><cfabort></cfif>
|
|
|
|
<!--- Создать таблицу при первом обращении --->
|
|
<cftry>
|
|
<cfquery datasource="baza">
|
|
CREATE TABLE IF NOT EXISTS prompts (
|
|
contract_id UUID PRIMARY KEY REFERENCES contracts(id),
|
|
prompt_text TEXT NOT NULL
|
|
)
|
|
</cfquery>
|
|
<cfcatch></cfcatch>
|
|
</cftry>
|
|
|
|
<cfparam name="url.contract_id" default="">
|
|
|
|
<cfset result = {ok: false, error: ""}>
|
|
|
|
<cftry>
|
|
<cfif NOT len(url.contract_id)>
|
|
<cfset result.error = "contract_id required">
|
|
<cfelseif cgi.request_method EQ "POST">
|
|
<!--- Сохранить промпт --->
|
|
<cfset body = toString(getHttpRequestData().content)>
|
|
<cfset data = deserializeJSON(body)>
|
|
<cfset prompt = structKeyExists(data, "prompt") ? data.prompt : "">
|
|
|
|
<cfquery datasource="baza">
|
|
DELETE FROM prompts WHERE contract_id = <cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">
|
|
</cfquery>
|
|
<cfif len(trim(prompt))>
|
|
<cfquery datasource="baza">
|
|
INSERT INTO prompts (contract_id, prompt_text) VALUES (
|
|
<cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">,
|
|
<cfqueryparam value="#prompt#" cfsqltype="cf_sql_varchar">
|
|
)
|
|
</cfquery>
|
|
</cfif>
|
|
<cfset result = {ok: true, saved: len(trim(prompt)) GT 0}>
|
|
<cfelse>
|
|
<!--- Получить промпт --->
|
|
<cfquery name="q" datasource="baza">
|
|
SELECT prompt_text FROM prompts
|
|
WHERE contract_id = <cfqueryparam value="#url.contract_id#" cfsqltype="cf_sql_varchar">
|
|
</cfquery>
|
|
<cfset result = {ok: true, prompt: q.recordCount GT 0 ? q.prompt_text : ""}>
|
|
</cfif>
|
|
<cfcatch>
|
|
<cfset result = {ok: false, error: cfcatch.message}>
|
|
</cfcatch>
|
|
</cftry>
|
|
|
|
<cfoutput>#serializeJSON(result)#</cfoutput>
|