From ae77d01d51af9f2e6d87b980401c4476c716e8cf Mon Sep 17 00:00:00 2001 From: Paul Trowbridge Date: Thu, 24 May 2018 13:26:41 -0400 Subject: [PATCH] add sql generation function to main setup --- deploy/setup.sql | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/deploy/setup.sql b/deploy/setup.sql index 06a2f9c..d0ad89c 100644 --- a/deploy/setup.sql +++ b/deploy/setup.sql @@ -151,6 +151,7 @@ ALTER TABLE ONLY tps.trans -------------create functions------------------------------------------------------------------------------------------------------------------------ +-----set source CREATE FUNCTION tps.srce_set(_defn jsonb) RETURNS jsonb AS $f$ @@ -216,4 +217,37 @@ BEGIN RETURN _message; END; $f$ +LANGUAGE plpgsql; + +-----generate sql to create select based on schema +CREATE FUNCTION tps.build_srce_view_sql(_srce text, _schema text) RETURNS TEXT +AS +$f$ +DECLARE + --_schema text; + _path text[]; + --_srce text; + _sql text; +BEGIN + --_schema:= 'default'; + _path:= ARRAY['schemas',_schema]::text[]; + --_srce:= 'dcard'; +SELECT + 'CREATE VIEW tpsv.'||_srce||'_'||_path[2]||' AS SELECT '||string_agg('(rec#>>'''||r.PATH::text||''')::'||r.type||' AS "'||r.column_name||'"',', ')||' FROM tps.trans WHERE srce = '''||_srce||'''' +INTO + _sql +FROM + tps.srce + JOIN LATERAL jsonb_array_elements(defn#>_path) ae(v) ON TRUE + JOIN LATERAL jsonb_to_record (ae.v) AS r(PATH text[], "type" text, column_name text) ON TRUE +WHERE + srce = _srce +GROUP BY + srce.srce; + +RETURN _sql; +RAISE NOTICE '%',_sql; + +END +$f$ LANGUAGE plpgsql; \ No newline at end of file