summaryrefslogtreecommitdiff
path: root/src/db/rest/media/api_update_user_media.sql
blob: be8835a6e5e741e24371926cd420fcd4ef9d2ee3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
CREATE FUNCTION api.update_user_media(
	media_type admin.user_media_type,
	mime TEXT,
	content TEXT
)
RETURNS void
LANGUAGE plpgsql VOLATILE
AS $BODY$
DECLARE
	_user_id INTEGER;
	_data BYTEA;
BEGIN
	_user_id = _api.get_user_id();
	_data = decode(content, 'base64');

	INSERT INTO admin.user_media (
		user_id,
		content,
		mime,
		type
	) VALUES (
		_user_id,
		_data,
		mime,
		media_type
	) ON CONFLICT (
		"user_id", "type"
	) DO UPDATE SET
		"content" = excluded.content,
		"mime" = excluded.mime,
		"type" = excluded.type,
		"modified" = clock_timestamp();
END
$BODY$;

GRANT EXECUTE ON FUNCTION api.update_user_media(admin.user_media_type, TEXT, TEXT)
	TO rest_user;
GRANT INSERT, UPDATE ON TABLE admin.user_media
	TO rest_user;
GRANT UPDATE ON TABLE sys.user_media_id_seq
	TO rest_user;