diff options
Diffstat (limited to 'src/db/rest/util')
-rw-r--r-- | src/db/rest/util/_api_raise_not_found.sql | 16 | ||||
-rw-r--r-- | src/db/rest/util/_api_serve_media.sql | 41 |
2 files changed, 16 insertions, 41 deletions
diff --git a/src/db/rest/util/_api_raise_not_found.sql b/src/db/rest/util/_api_raise_not_found.sql new file mode 100644 index 0000000..f4997a6 --- /dev/null +++ b/src/db/rest/util/_api_raise_not_found.sql @@ -0,0 +1,16 @@ +CREATE FUNCTION _api.raise_not_found() +RETURNS BOOLEAN +LANGUAGE plpgsql VOLATILE +AS $BODY$ +BEGIN + PERFORM _api.raise( + _msg => 'api_not_found', + _err => 404 + ); + + RETURN TRUE; +END +$BODY$; + +GRANT EXECUTE ON FUNCTION _api.raise_not_found() + TO rest_anon, rest_user; diff --git a/src/db/rest/util/_api_serve_media.sql b/src/db/rest/util/_api_serve_media.sql deleted file mode 100644 index c2e213a..0000000 --- a/src/db/rest/util/_api_serve_media.sql +++ /dev/null @@ -1,41 +0,0 @@ -CREATE FUNCTION _api.serve_media( - _media_id INTEGER -) -RETURNS sys."*/*" -LANGUAGE plpgsql VOLATILE -AS $BODY$ -DECLARE - _headers TEXT; - _data BYTEA; -BEGIN - - SELECT FORMAT( - '[{"Content-Type": "%s"},' - '{"Content-Disposition": "inline; filename=\"%s\""},' - '{"Cache-Control": "max-age=259200"}]' - , m.type, m.name) - FROM admin.media m - WHERE m.id = _media_id INTO _headers; - - PERFORM SET_CONFIG('response.headers', _headers, true); - - SELECT m.content - FROM admin.media m - WHERE m.id = _media_id - INTO _data; - - IF FOUND THEN - RETURN(_data); - ELSE - PERFORM _api.raise( - _msg => 'api_not_found', - _err => 404 - ); - END IF; -END -$BODY$; - -GRANT EXECUTE ON FUNCTION _api.serve_media(INTEGER) - TO rest_anon, rest_user; -GRANT SELECT ON TABLE admin.media - TO rest_anon, rest_user; |