fix: application update datasource в api.cfm

This commit is contained in:
2026-06-18 12:44:29 +04:00
parent da8660ff58
commit 91e1cdf76b
+22 -24
View File
@@ -1,13 +1,20 @@
<cfprocessingdirective suppressWhitespace="true">
<cfheader name="Content-Type" value="application/json; charset=utf-8">
<cfset result = {ok: false, error: "unknown action"}>
<cfset action = url.keyExists("action") ? url.action : "">
<cfset ds = {
class: "org.postgresql.Driver",
connectionString: "jdbc:postgresql://postgresqlk8s-master.418f9960-2eb7-4429-b2ec-ac64319d7268.svc.cluster.local:5432/baza",
username: "super",
password: "hoHdkA23yxlD9oMUlZ1bIbNyc6DE2mNJmyHMNkEpVD1F4suQs7O2lyN4t0qITyzt"
}/>
<cfset application action="update" datasource="#ds#" name="baza"/>
<cftry>
<cfif action EQ "test">
<cfquery name="q" datasource="baza">SELECT 1 as ok</cfquery>
<cfset result = {ok: true, message: "PostgreSQL connected", db: "baza"}>
<cfset result = {ok: true, message: "PostgreSQL connected"}>
<cfelseif action EQ "tables">
<cfquery name="q" datasource="baza">
@@ -36,33 +43,24 @@
</cfloop>
<cfset result = {ok: true, results: results}>
<cfelseif action EQ "query">
<cfif NOT url.keyExists("sql")>
<cfset result = {ok: false, error: "sql parameter required"}>
<cfelse>
<cfquery name="q" datasource="baza">#preserveSingleQuotes(url.sql)#</cfquery>
<cfset var cols = q.getColumnNames()>
<cfset var rows = []>
<cfloop query="q">
<cfset var row = {}>
<cfloop array="#cols#" index="c"><cfset row[c] = q[c][q.currentRow]></cfloop>
<cfset arrayAppend(rows, row)>
</cfloop>
<cfset result = {ok: true, columns: cols, rows: rows, count: q.recordCount}>
</cfif>
<cfelseif action EQ "query" AND url.keyExists("sql")>
<cfquery name="q" datasource="baza">#preserveSingleQuotes(url.sql)#</cfquery>
<cfset var cols = q.getColumnNames()>
<cfset var rows = []>
<cfloop query="q">
<cfset var row = {}>
<cfloop array="#cols#" index="c"><cfset row[c] = q[c][q.currentRow]></cfloop>
<cfset arrayAppend(rows, row)>
</cfloop>
<cfset result = {ok: true, columns: cols, rows: rows, count: q.recordCount}>
<cfelseif action EQ "execute" AND cgi.request_method EQ "POST">
<cfset var body = deserializeJSON(toString(getHttpRequestData().content))>
<cfif NOT structKeyExists(body, "sql")>
<cfset result = {ok: false, error: "sql required"}>
<cfelse>
<cfquery name="q" datasource="baza">#preserveSingleQuotes(body.sql)#</cfquery>
<cfset result = {ok: true}>
</cfif>
<cfquery name="q" datasource="baza">#preserveSingleQuotes(body.sql)#</cfquery>
<cfset result = {ok: true}>
</cfif>
<cfcatch><cfset result = {ok: false, error: cfcatch.message, detail: cfcatch.detail}></cfcatch>
<cfcatch><cfset result = {ok: false, error: cfcatch.message}></cfcatch>
</cftry>
<cfoutput>#serializeJSON(result)#</cfoutput>
</cfprocessingdirective>