get rid of validation steps not required

This commit is contained in:
Paul Trowbridge 2018-05-23 00:32:15 -04:00
parent b6c1126ecb
commit eb8da0f6c5

View File

@ -54,10 +54,13 @@ BEGIN
$$ $$
INTO INTO
_defn; _defn;
/* /*
1. determine if insert or update validate schema? should not need validation if created by ui
2. if update, determine if conflicts exists
3. do merge
*/ */
-------extract current source schema for compare-------------------------- -------extract current source schema for compare--------------------------
@ -70,34 +73,9 @@ BEGIN
WHERE WHERE
srce = _defn->>'name'; srce = _defn->>'name';
-------check for transctions already existing under this source-----------
SELECT
COUNT(*)
INTO
_cnt
FROM
tps.trans
WHERE
srce = _defn->>'name';
--if there are transaction already and the schema is different stop--------
IF _cnt > 0 THEN
IF _cur_sch <> _defn->'schema' THEN
_conflict = TRUE;
--get out of the function somehow
_message =
$$
{
"message": "transactions already exist under source profile and there is a pending schema change",
"status": "error"
}
$$: :jsonb;
return _message;
END IF;
END IF;
/*------------------------------------------------------- /*-------------------------------------------------------
do schema validation fo _defn object? do schema validation
---------------------------------------------------------*/ ---------------------------------------------------------*/
-------------------insert definition---------------------------------------- -------------------insert definition----------------------------------------
@ -108,33 +86,8 @@ BEGIN
ON CONFLICT ON CONSTRAINT srce_pkey DO UPDATE ON CONFLICT ON CONSTRAINT srce_pkey DO UPDATE
SET SET
defn = _defn; defn = _defn;
------------------drop existing type-----------------------------------------
EXECUTE format('DROP TYPE IF EXISTS tps.%I',_defn->>'name');
------------------create new type--------------------------------------------
SELECT
string_agg(quote_ident(prs.key)||' '||prs.type,',')
INTO
_sql
FROM
tps.srce
--unwrap the schema definition array
LEFT JOIN LATERAL jsonb_populate_recordset(null: :tps.srce_defn_schema, defn->'schema') prs ON TRUE
WHERE
srce = _defn->>'name'
GROUP BY
srce;
RAISE NOTICE 'CREATE TYPE tps.% AS (%)',_defn->>'name',_sql;
EXECUTE format('CREATE TYPE tps.%I AS (%s)',_defn->>'name',_sql);
EXECUTE format('COMMENT ON TYPE tps.%I IS %L',_defn->>'name',(_defn->>'description'));
----------------set message-----------------------------------------------------
_message = _message =
$$ $$