@@ -133,25 +133,37 @@ CREATE TRIGGER queryables_collection_trigger AFTER INSERT OR UPDATE ON collectio
133
133
FOR EACH STATEMENT EXECUTE PROCEDURE queryables_trigger_func();
134
134
135
135
CREATE OR REPLACE FUNCTION get_queryables (_collection_ids text [] DEFAULT NULL ) RETURNS jsonb AS $$
136
- SELECT
137
- jsonb_build_object(
138
- ' $schema' , ' http://json-schema.org/draft-07/schema#' ,
139
- ' $id' , ' https://example.org/queryables' ,
140
- ' type' , ' object' ,
141
- ' title' , ' Stac Queryables.' ,
142
- ' properties' , jsonb_object_agg(
143
- name,
144
- definition
145
- )
146
- )
147
- FROM queryables
148
- WHERE
149
- _collection_ids IS NULL OR
150
- cardinality(_collection_ids) = 0 OR
151
- collection_ids IS NULL OR
152
- _collection_ids && collection_ids
153
- ;
154
- $$ LANGUAGE SQL STABLE;
136
+ BEGIN
137
+ -- Build up queryables if the input contains valid collection ids or is empty
138
+ IF (select array_agg(id) from collections) @> _collection_ids OR
139
+ _collection_ids IS NULL OR
140
+ cardinality(_collection_ids) = 0
141
+ THEN
142
+ RETURN (
143
+ SELECT
144
+ jsonb_build_object(
145
+ ' $schema' , ' http://json-schema.org/draft-07/schema#' ,
146
+ ' $id' , ' https://example.org/queryables' ,
147
+ ' type' , ' object' ,
148
+ ' title' , ' STAC Queryables.' ,
149
+ ' properties' , jsonb_object_agg(
150
+ name,
151
+ definition
152
+ )
153
+ )
154
+ FROM queryables
155
+ WHERE
156
+ _collection_ids IS NULL OR
157
+ cardinality(_collection_ids) = 0 OR
158
+ collection_ids IS NULL OR
159
+ _collection_ids && collection_ids
160
+ );
161
+ ELSE
162
+ RETURN NULL ;
163
+ END IF;
164
+ END;
165
+
166
+ $$ LANGUAGE PLPGSQL STABLE;
155
167
156
168
CREATE OR REPLACE FUNCTION get_queryables (_collection text DEFAULT NULL ) RETURNS jsonb AS $$
157
169
SELECT
0 commit comments