summaryrefslogtreecommitdiff
path: root/src/db/rest/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/rest/util')
-rw-r--r--src/db/rest/util/_api_raise_not_found.sql16
-rw-r--r--src/db/rest/util/_api_serve_media.sql41
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;