fix: api.cfm без cfprocessingdirective, cfparam action
This commit is contained in:
@@ -1,66 +1,111 @@
|
|||||||
<cfprocessingdirective suppressWhitespace="true">
|
<cfsetting showdebugoutput="no" enablecfoutputonly="true">
|
||||||
<cfheader name="Content-Type" value="application/json; charset=utf-8">
|
<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 = {
|
<cfparam name="url.action" default="test">
|
||||||
class: "org.postgresql.Driver",
|
|
||||||
connectionString: "jdbc:postgresql://postgresqlk8s-master.418f9960-2eb7-4429-b2ec-ac64319d7268.svc.cluster.local:5432/baza",
|
<cfset result = {ok: false, error: "unknown action"}>
|
||||||
username: "super",
|
|
||||||
password: "hoHdkA23yxlD9oMUlZ1bIbNyc6DE2mNJmyHMNkEpVD1F4suQs7O2lyN4t0qITyzt"
|
|
||||||
}/>
|
|
||||||
<cfset application action="update" datasource="#ds#" name="baza"/>
|
|
||||||
|
|
||||||
<cftry>
|
<cftry>
|
||||||
<cfif action EQ "test">
|
<cfif url.action EQ "test">
|
||||||
<cfquery name="q" datasource="baza">SELECT 1 as ok</cfquery>
|
<cfquery name="q" datasource="baza">SELECT 1 as ok</cfquery>
|
||||||
<cfset result = {ok: true, message: "PostgreSQL connected"}>
|
<cfset result = {ok: true, message: "PostgreSQL connected"}>
|
||||||
|
|
||||||
<cfelseif action EQ "tables">
|
<cfelseif url.action EQ "tables">
|
||||||
<cfquery name="q" datasource="baza">
|
<cfquery name="q" datasource="baza">
|
||||||
SELECT table_name FROM information_schema.tables
|
SELECT table_name FROM information_schema.tables
|
||||||
WHERE table_schema = 'public' ORDER BY table_name
|
WHERE table_schema = 'public' ORDER BY table_name
|
||||||
</cfquery>
|
</cfquery>
|
||||||
<cfset var tables = []>
|
<cfset tables = []>
|
||||||
<cfloop query="q"><cfset arrayAppend(tables, q.table_name)></cfloop>
|
<cfloop query="q"><cfset arrayAppend(tables, q.table_name)></cfloop>
|
||||||
<cfset result = {ok: true, tables: tables}>
|
<cfset result = {ok: true, tables: tables}>
|
||||||
|
|
||||||
<cfelseif action EQ "schema">
|
<cfelseif url.action EQ "schema">
|
||||||
<cfset var ddl = [
|
<cfset result = {ok: true, results: []}>
|
||||||
"CREATE TABLE IF NOT EXISTS documents (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), filename TEXT NOT NULL, mime_type TEXT NOT NULL, original_bytes BYTEA, parsed_text TEXT, elements_json JSONB, status TEXT DEFAULT 'uploaded', error_message TEXT, created_at TIMESTAMPTZ DEFAULT now())",
|
<cftry>
|
||||||
"CREATE TABLE IF NOT EXISTS contracts (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), number TEXT NOT NULL, client TEXT, date_signed DATE, status TEXT DEFAULT 'active', created_at TIMESTAMPTZ DEFAULT now())",
|
<cfquery datasource="baza">
|
||||||
"CREATE TABLE IF NOT EXISTS supplements (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), contract_id UUID REFERENCES contracts(id), number TEXT, date_signed DATE, type TEXT DEFAULT 'initial', document_id UUID REFERENCES documents(id), created_at TIMESTAMPTZ DEFAULT now())",
|
CREATE TABLE IF NOT EXISTS documents (
|
||||||
"CREATE TABLE IF NOT EXISTS spec_rows (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), supplement_id UUID REFERENCES supplements(id), row_num INTEGER, name TEXT, price NUMERIC, qty NUMERIC, sum NUMERIC, date_start DATE, date_end DATE, created_at TIMESTAMPTZ DEFAULT now())",
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
"CREATE TABLE IF NOT EXISTS spec_history (id UUID PRIMARY KEY DEFAULT gen_random_uuid(), contract_id UUID REFERENCES contracts(id), supplement_id UUID REFERENCES supplements(id), row_num INTEGER, change_type TEXT NOT NULL, old_values JSONB, new_values JSONB, created_at TIMESTAMPTZ DEFAULT now())"
|
filename TEXT NOT NULL, mime_type TEXT NOT NULL,
|
||||||
]>
|
original_bytes BYTEA, parsed_text TEXT, elements_json JSONB,
|
||||||
<cfset var results = []>
|
status TEXT DEFAULT 'uploaded', error_message TEXT,
|
||||||
<cfloop array="#ddl#" index="sql">
|
created_at TIMESTAMPTZ DEFAULT now()
|
||||||
<cftry>
|
)
|
||||||
<cfquery datasource="baza">#preserveSingleQuotes(sql)#</cfquery>
|
</cfquery>
|
||||||
<cfset arrayAppend(results, "OK")>
|
<cfset arrayAppend(result.results, "documents: OK")>
|
||||||
<cfcatch><cfset arrayAppend(results, cfcatch.message)></cfcatch>
|
<cfcatch><cfset arrayAppend(result.results, "documents: " & cfcatch.message)></cfcatch>
|
||||||
</cftry>
|
</cftry>
|
||||||
</cfloop>
|
<cftry>
|
||||||
<cfset result = {ok: true, results: results}>
|
<cfquery datasource="baza">
|
||||||
|
CREATE TABLE IF NOT EXISTS contracts (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
number TEXT NOT NULL, client TEXT, date_signed DATE,
|
||||||
|
status TEXT DEFAULT 'active', created_at TIMESTAMPTZ DEFAULT now()
|
||||||
|
)
|
||||||
|
</cfquery>
|
||||||
|
<cfset arrayAppend(result.results, "contracts: OK")>
|
||||||
|
<cfcatch><cfset arrayAppend(result.results, "contracts: " & cfcatch.message)></cfcatch>
|
||||||
|
</cftry>
|
||||||
|
<cftry>
|
||||||
|
<cfquery datasource="baza">
|
||||||
|
CREATE TABLE IF NOT EXISTS supplements (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
contract_id UUID REFERENCES contracts(id),
|
||||||
|
number TEXT, date_signed DATE, type TEXT DEFAULT 'initial',
|
||||||
|
document_id UUID REFERENCES documents(id),
|
||||||
|
created_at TIMESTAMPTZ DEFAULT now()
|
||||||
|
)
|
||||||
|
</cfquery>
|
||||||
|
<cfset arrayAppend(result.results, "supplements: OK")>
|
||||||
|
<cfcatch><cfset arrayAppend(result.results, "supplements: " & cfcatch.message)></cfcatch>
|
||||||
|
</cftry>
|
||||||
|
<cftry>
|
||||||
|
<cfquery datasource="baza">
|
||||||
|
CREATE TABLE IF NOT EXISTS spec_rows (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
supplement_id UUID REFERENCES supplements(id),
|
||||||
|
row_num INTEGER, name TEXT, price NUMERIC, qty NUMERIC,
|
||||||
|
sum NUMERIC, date_start DATE, date_end DATE,
|
||||||
|
created_at TIMESTAMPTZ DEFAULT now()
|
||||||
|
)
|
||||||
|
</cfquery>
|
||||||
|
<cfset arrayAppend(result.results, "spec_rows: OK")>
|
||||||
|
<cfcatch><cfset arrayAppend(result.results, "spec_rows: " & cfcatch.message)></cfcatch>
|
||||||
|
</cftry>
|
||||||
|
<cftry>
|
||||||
|
<cfquery datasource="baza">
|
||||||
|
CREATE TABLE IF NOT EXISTS spec_history (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
contract_id UUID REFERENCES contracts(id),
|
||||||
|
supplement_id UUID REFERENCES supplements(id),
|
||||||
|
row_num INTEGER, change_type TEXT NOT NULL,
|
||||||
|
old_values JSONB, new_values JSONB,
|
||||||
|
created_at TIMESTAMPTZ DEFAULT now()
|
||||||
|
)
|
||||||
|
</cfquery>
|
||||||
|
<cfset arrayAppend(result.results, "spec_history: OK")>
|
||||||
|
<cfcatch><cfset arrayAppend(result.results, "spec_history: " & cfcatch.message)></cfcatch>
|
||||||
|
</cftry>
|
||||||
|
|
||||||
<cfelseif action EQ "query" AND url.keyExists("sql")>
|
<cfelseif url.action EQ "query" AND structKeyExists(url, "sql")>
|
||||||
<cfquery name="q" datasource="baza">#preserveSingleQuotes(url.sql)#</cfquery>
|
<cfquery name="q" datasource="baza">#preserveSingleQuotes(url.sql)#</cfquery>
|
||||||
<cfset var cols = q.getColumnNames()>
|
<cfset cols = q.getColumnNames()>
|
||||||
<cfset var rows = []>
|
<cfset rows = []>
|
||||||
<cfloop query="q">
|
<cfloop query="q">
|
||||||
<cfset var row = {}>
|
<cfset row = {}>
|
||||||
<cfloop array="#cols#" index="c"><cfset row[c] = q[c][q.currentRow]></cfloop>
|
<cfloop array="#cols#" index="c"><cfset row[c] = q[c][q.currentRow]></cfloop>
|
||||||
<cfset arrayAppend(rows, row)>
|
<cfset arrayAppend(rows, row)>
|
||||||
</cfloop>
|
</cfloop>
|
||||||
<cfset result = {ok: true, columns: cols, rows: rows, count: q.recordCount}>
|
<cfset result = {ok: true, columns: cols, rows: rows, count: q.recordCount}>
|
||||||
|
|
||||||
<cfelseif action EQ "execute" AND cgi.request_method EQ "POST">
|
<cfelseif url.action EQ "execute" AND cgi.request_method EQ "POST">
|
||||||
<cfset var body = deserializeJSON(toString(getHttpRequestData().content))>
|
<cfset body = deserializeJSON(toString(getHttpRequestData().content))>
|
||||||
<cfquery name="q" datasource="baza">#preserveSingleQuotes(body.sql)#</cfquery>
|
<cfquery datasource="baza">#preserveSingleQuotes(body.sql)#</cfquery>
|
||||||
<cfset result = {ok: true}>
|
<cfset result = {ok: true}>
|
||||||
</cfif>
|
</cfif>
|
||||||
|
|
||||||
<cfcatch><cfset result = {ok: false, error: cfcatch.message}></cfcatch>
|
<cfcatch>
|
||||||
|
<cfset result = {ok: false, error: cfcatch.message}>
|
||||||
|
</cfcatch>
|
||||||
</cftry>
|
</cftry>
|
||||||
|
|
||||||
<cfoutput>#serializeJSON(result)#</cfoutput>
|
<cfoutput>#serializeJSON(result)#</cfoutput>
|
||||||
</cfprocessingdirective>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user