40 lines
1.2 KiB
MySQL
40 lines
1.2 KiB
MySQL
|
-- This is a set of functions not intended to be used in production
|
||
|
-- but useful to explore the database without rails ORM.
|
||
|
-- They are thought to be loosely coupled to the models and just rely on FK relations.
|
||
|
--
|
||
|
-- To install:
|
||
|
-- \i metadata-goodies.psql
|
||
|
-- To uninstall:
|
||
|
-- DROP SCHEMA goodies CASCADE;
|
||
|
|
||
|
|
||
|
CREATE SCHEMA IF NOT EXISTS goodies AUTHORIZATION postgres;
|
||
|
|
||
|
CREATE OR REPLACE FUNCTION goodies.related_layer_ids(table_id uuid)
|
||
|
RETURNS SETOF uuid AS $$
|
||
|
BEGIN
|
||
|
RETURN QUERY SELECT DISTINCT(layer_id) FROM layers_user_tables WHERE layers_user_tables.user_table_id = table_id;
|
||
|
END;
|
||
|
$$ LANGUAGE plpgsql;
|
||
|
|
||
|
|
||
|
|
||
|
CREATE OR REPLACE FUNCTION goodies.related_map_ids(table_id uuid)
|
||
|
RETURNS SETOF uuid AS $$
|
||
|
BEGIN
|
||
|
RETURN QUERY SELECT DISTINCT(map_id) FROM layers_maps WHERE layers_maps.layer_id
|
||
|
IN (SELECT goodies.related_layer_ids(table_id));
|
||
|
|
||
|
END;
|
||
|
$$ LANGUAGE plpgsql;
|
||
|
|
||
|
|
||
|
-- E.g: SELECT id, name, type FROM goodies.related_vizs('6eb62d84-c4bc-446b-89dd-5435f6cc9346');
|
||
|
CREATE OR REPLACE FUNCTION goodies.related_vizs(table_id uuid)
|
||
|
RETURNS SETOF visualizations AS $$
|
||
|
BEGIN
|
||
|
RETURN QUERY SELECT * FROM visualizations WHERE visualizations.map_id
|
||
|
IN (SELECT goodies.related_map_ids(table_id));
|
||
|
END;
|
||
|
$$ LANGUAGE plpgsql;
|