From 5a74914eac42243e1438f4d836574dda38a0870e Mon Sep 17 00:00:00 2001 From: xbgmsharp Date: Sun, 23 Apr 2023 11:06:49 +0200 Subject: [PATCH] Export helpers function to a separate file --- initdb/02_5_signalk_api_deps.sql | 108 ------------------------------- 1 file changed, 108 deletions(-) diff --git a/initdb/02_5_signalk_api_deps.sql b/initdb/02_5_signalk_api_deps.sql index 4f400ab..c1a718c 100644 --- a/initdb/02_5_signalk_api_deps.sql +++ b/initdb/02_5_signalk_api_deps.sql @@ -156,70 +156,6 @@ COMMENT ON VIEW api.versions_view IS 'Expose as a table view app and system version to API'; -CREATE OR REPLACE FUNCTION public.isnumeric(text) RETURNS BOOLEAN AS -$isnumeric$ -DECLARE x NUMERIC; -BEGIN - x = $1::NUMERIC; - RETURN TRUE; -EXCEPTION WHEN others THEN - RETURN FALSE; -END; -$isnumeric$ -STRICT -LANGUAGE plpgsql IMMUTABLE; --- Description -COMMENT ON FUNCTION - public.isnumeric - IS 'Check typeof value is numeric'; - -CREATE OR REPLACE FUNCTION public.isboolean(text) RETURNS BOOLEAN AS -$isboolean$ -DECLARE x BOOLEAN; -BEGIN - x = $1::BOOLEAN; - RETURN TRUE; -EXCEPTION WHEN others THEN - RETURN FALSE; -END; -$isboolean$ -STRICT -LANGUAGE plpgsql IMMUTABLE; --- Description -COMMENT ON FUNCTION - public.isboolean - IS 'Check typeof value is boolean'; - -create or replace function public.isdate(s varchar) returns boolean as $$ -begin - perform s::date; - return true; -exception when others then - return false; -end; -$$ language plpgsql; --- Description -COMMENT ON FUNCTION - public.isdate - IS 'Check typeof value is date'; - -CREATE OR REPLACE FUNCTION public.istimestamptz(text) RETURNS BOOLEAN AS -$isdate$ -DECLARE x TIMESTAMP WITHOUT TIME ZONE; -BEGIN - x = $1::TIMESTAMP WITHOUT TIME ZONE; - RETURN TRUE; -EXCEPTION WHEN others THEN - RETURN FALSE; -END; -$isdate$ -STRICT -LANGUAGE plpgsql IMMUTABLE; --- Description -COMMENT ON FUNCTION - public.istimestamptz - IS 'Check typeof value is TIMESTAMP WITHOUT TIME ZONE'; - DROP FUNCTION IF EXISTS api.update_user_preferences_fn; -- Update/Add a specific user setting into preferences CREATE OR REPLACE FUNCTION api.update_user_preferences_fn(IN key TEXT, IN value TEXT) RETURNS BOOLEAN AS @@ -255,47 +191,3 @@ $update_user_preferences$ language plpgsql security definer; COMMENT ON FUNCTION api.update_user_preferences_fn IS 'Update user preferences jsonb key pair value'; - --- https://stackoverflow.com/questions/42944888/merging-jsonb-values-in-postgresql -CREATE OR REPLACE FUNCTION public.jsonb_recursive_merge(A jsonb, B jsonb) -RETURNS jsonb LANGUAGE SQL AS $$ - SELECT - jsonb_object_agg( - coalesce(ka, kb), - CASE - WHEN va isnull THEN vb - WHEN vb isnull THEN va - WHEN jsonb_typeof(va) <> 'object' OR jsonb_typeof(vb) <> 'object' THEN vb - ELSE jsonb_recursive_merge(va, vb) END - ) - FROM jsonb_each(A) temptable1(ka, va) - FULL JOIN jsonb_each(B) temptable2(kb, vb) ON ka = kb -$$; --- Description -COMMENT ON FUNCTION - public.jsonb_recursive_merge - IS 'Merging JSONB values'; - --- https://stackoverflow.com/questions/36041784/postgresql-compare-two-jsonb-objects -CREATE OR REPLACE FUNCTION public.jsonb_diff_val(val1 JSONB,val2 JSONB) -RETURNS JSONB AS $jsonb_diff_val$ - DECLARE - result JSONB; - v RECORD; - BEGIN - result = val1; - FOR v IN SELECT * FROM jsonb_each(val2) LOOP - IF result @> jsonb_build_object(v.key,v.value) - THEN result = result - v.key; - ELSIF result ? v.key THEN CONTINUE; - ELSE - result = result || jsonb_build_object(v.key,'null'); - END IF; - END LOOP; - RETURN result; - END; -$jsonb_diff_val$ LANGUAGE plpgsql; --- Description -COMMENT ON FUNCTION - public.jsonb_diff_val - IS 'Compare two jsonb objects';