66 lines
1.4 KiB
PL/PgSQL
66 lines
1.4 KiB
PL/PgSQL
|
|
CREATE OR REPLACE FUNCTION tps.srce_set(_name text, _defn jsonb) RETURNS jsonb
|
|
AS $f$
|
|
|
|
DECLARE
|
|
_cnt int;
|
|
_conflict BOOLEAN;
|
|
_message jsonb;
|
|
|
|
BEGIN
|
|
|
|
/*
|
|
1. determine if insert or update
|
|
2. if update, determine if conflicts exists
|
|
3. do merge
|
|
*/
|
|
|
|
-------check for transctions already existing under this source-----------
|
|
SELECT
|
|
COUNT(*)
|
|
INTO
|
|
_cnt
|
|
FROM
|
|
tps.trans
|
|
WHERE
|
|
srce = _name;
|
|
|
|
-------set a message------------------------------------------------------
|
|
IF _cnt > 0 THEN
|
|
_conflict = TRUE;
|
|
--get out of the function somehow
|
|
_message =
|
|
$$
|
|
{
|
|
"message":"transactions already exist under source profile, cannot change the definition"
|
|
,"status":"error"
|
|
}
|
|
$$::jsonb;
|
|
return _message;
|
|
END IF;
|
|
|
|
/*-----------------schema validation---------------------
|
|
yeah dont feel like it right now
|
|
---------------------------------------------------------*/
|
|
|
|
INSERT INTO
|
|
tps.srce
|
|
SELECT
|
|
_name, _defn
|
|
ON CONFLICT ON CONSTRAINT srce_pkey DO UPDATE
|
|
SET
|
|
defn = _defn;
|
|
|
|
_message =
|
|
$$
|
|
{
|
|
"message":"definition set"
|
|
,"status":"success"
|
|
}
|
|
$$::jsonb;
|
|
return _message;
|
|
|
|
END;
|
|
$f$
|
|
LANGUAGE plpgsql
|