37 lines
759 B
MySQL
37 lines
759 B
MySQL
|
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;
|