I have following code but this is throwing error:
RETURN cannot have a parameter in function returning set
Any idea on how I can fix it and why I am getting this error?
DROP FUNCTION IF EXISTS public.get_services_connected_for_workspace;
DROP FUNCTION IF EXISTS public.get_services_connected_data;
CREATE OR REPLACE FUNCTION public.get_services_connected_for_workspace(_workspace_id BIGINT)
RETURNS SETOF services_connected_response
LANGUAGE plpgsql
AS $function$
DECLARE
results services_connected_response[];
services_connected_row services_connected_response;
BEGIN
SELECT ARRAY[
('github', COALESCE(service_github.auto_invite, false), services_connected.service_github IS NOT NULL, false, COALESCE(service_github.last_synced, NULL), COALESCE(service_github.sync_status, NULL)),
('zoom', COALESCE(service_zoom.auto_invite, false), services_connected.service_zoom IS NOT NULL, false, COALESCE(service_zoom.last_synced, NULL), COALESCE(service_zoom.sync_status, NULL)),
('jira', COALESCE(service_jira.auto_invite, false), services_connected.service_jira IS NOT NULL, false, COALESCE(service_jira.last_synced, NULL), COALESCE(service_jira.sync_status, NULL)),
('docusign', COALESCE(service_docusign.auto_invite, false), services_connected.service_docusign IS NOT NULL, false, COALESCE(service_docusign.last_synced, NULL), COALESCE(service_docusign.sync_status, NULL)),
('asana', COALESCE(service_asana.auto_invite, false), services_connected.service_asana IS NOT NULL, false, COALESCE(service_asana.last_synced, NULL), COALESCE(service_asana.sync_status, NULL)),
('google', COALESCE(service_google.auto_invite, false), services_connected.service_google IS NOT NULL, true, COALESCE(service_google.last_synced, NULL), COALESCE(service_google.sync_status, NULL))
]
INTO results
FROM services_connected
LEFT JOIN service_github ON services_connected.service_github = service_github.id
LEFT JOIN service_jira ON services_connected.service_jira = service_jira.id
LEFT JOIN service_zoom ON services_connected.service_zoom = service_zoom.id
LEFT JOIN service_asana ON services_connected.service_asana = service_asana.id
LEFT JOIN service_docusign ON services_connected.service_docusign = service_docusign.id
LEFT JOIN service_google ON services_connected.service_google = service_google.id
WHERE services_connected.workspace_id = _workspace_id;
RETURN results;
END;
$function$;
CREATE OR REPLACE FUNCTION public.get_services_connected_data()
RETURNS SETOF services_connected_response
LANGUAGE plpgsql
AS $function$
DECLARE
_workspace_id BIGINT := ((current_setting('request.jwt.claims'::text, TRUE))::JSON ->> 'workspace_id')::BIGINT;
BEGIN
RETURN QUERY
SELECT *
FROM public.get_services_connected_for_workspace(_workspace_id);
END;
$function$;