summaryrefslogtreecommitdiff
path: root/src/db/rest/media/api_profile_avatar.sql
blob: 86079992f2273efcae08abfff7478d3d15c0774a (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
CREATE FUNCTION api.profile_avatar(
	user_id INTEGER DEFAULT 0
)
RETURNS sys."*/*"
LANGUAGE plpgsql VOLATILE
AS $BODY$
DECLARE
	_id INTEGER;
	_mod INTEGER;
	_name TEXT;
BEGIN
	SELECT media_id INTO _id
	FROM admin.user_media m
	WHERE m.user_id = profile_avatar.user_id
	AND type = 'avatar'::admin.user_media_type;

	-- get default if not exists
	IF NOT FOUND THEN
		_mod = MOD(user_id, 24);
		_name = 'default_avatar_' || _mod || '.png';

		SELECT id INTO _id
		FROM admin.media
		WHERE name = _name;
	END IF;

	RETURN _api.serve_media(_id);
END
$BODY$;

GRANT EXECUTE ON FUNCTION api.profile_avatar(INTEGER)
	TO rest_anon, rest_user;
GRANT SELECT ON TABLE admin.user_media
	TO rest_anon, rest_user;
GRANT SELECT ON TABLE admin.media
	TO rest_anon, rest_user;