45 lines
1.2 KiB
PL/PgSQL
45 lines
1.2 KiB
PL/PgSQL
-- Functions used to search the observatory for measures
|
|
--------------------------------------------------------------------------------
|
|
-- TODO allow the user to specify the boundary to search for measures
|
|
--
|
|
|
|
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_Search_STU(
|
|
search_term text,
|
|
relevant_boundary text DEFAULT null
|
|
)
|
|
RETURNS TABLE(description text, name text, aggregate text, source text) as $$
|
|
DECLARE
|
|
boundary_term text;
|
|
BEGIN
|
|
IF relevant_boundary then
|
|
boundary_term = '';
|
|
else
|
|
boundary_term = '';
|
|
END IF;
|
|
|
|
RETURN QUERY
|
|
EXECUTE format($string$
|
|
SELECT description,
|
|
name,
|
|
aggregate,
|
|
replace(split_part(id,'".', 1),'"', '') source
|
|
FROM observatory.OBS_column
|
|
where name ilike '%'|| %L || '%'
|
|
or description ilike '%'|| %L || '%'
|
|
%s
|
|
$string$, search_term, search_term,boundary_term);
|
|
RETURN;
|
|
END
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION OBS_GetAvailableBoundaries(geometry location)
|
|
RETURNS TABLE(description text, name text, id text) as $$
|
|
BEGIN
|
|
RETURN QUERY
|
|
EXECUTE format($string$
|
|
Select description, name, id FROM observatory.OBS_column
|
|
$string$)
|
|
END
|
|
$$
|