From 7b11de9d0d88683f65d6c2474bf098c26fe08958 Mon Sep 17 00:00:00 2001 From: xbgmsharp Date: Wed, 13 Sep 2023 21:57:38 +0200 Subject: [PATCH] Add support for logbook observations jsonb --- initdb/02_5_signalk_api_deps.sql | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/initdb/02_5_signalk_api_deps.sql b/initdb/02_5_signalk_api_deps.sql index bf6fc28..41832eb 100644 --- a/initdb/02_5_signalk_api_deps.sql +++ b/initdb/02_5_signalk_api_deps.sql @@ -258,4 +258,27 @@ CREATE VIEW api.eventlogs_view WITH (security_invoker=true,security_barrier=true -- Description COMMENT ON VIEW api.eventlogs_view - IS 'Event logs view'; \ No newline at end of file + IS 'Event logs view'; + +DROP FUNCTION IF EXISTS api.update_logbook_observations_fn; +-- Update/Add a specific user observations into logbook +CREATE OR REPLACE FUNCTION api.update_logbook_observations_fn(IN _id INT, IN observations TEXT) RETURNS BOOLEAN AS +$update_logbook_observations$ +DECLARE + _value TEXT := NULL; +BEGIN + RAISE WARNING '-> update_logbook_extra_fn id:[%] observations:[%]', _id, observations; + _value := to_jsonb(observations)::jsonb; + -- { 'observations': { 'seaState': -1, 'cloudCoverage': -1, 'visibility': -1 } } + UPDATE api.logbook SET extra = public.jsonb_recursive_merge(extra, _value) WHERE id = _id; + IF FOUND IS True THEN + RETURN True; + END IF; + RETURN False; +END; +$update_logbook_observations$ language plpgsql security definer; + +-- Description +COMMENT ON FUNCTION + api.update_logbook_observations_fn + IS 'Update logbook observations jsonb key pair value';