X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;h=5707ba7a2d0df25de30d5a03e789497fff8d468c;hb=ff6c9a5c961647b64c3c9fcc05932093595e9588;hp=68128053903e5f070b3a88413f3010e8a2f9ab7f;hpb=e4afe1359bb36aae877c0b9ce32125a75aa9e1be;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 681280539..5707ba7a2 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -404,6 +404,10 @@ defmodule Pleroma.User do user.info.locked || false end + def get_by_id(id) do + Repo.get_by(User, id: id) + end + def get_by_ap_id(ap_id) do Repo.get_by(User, ap_id: ap_id) end @@ -439,11 +443,33 @@ defmodule Pleroma.User do Cachex.fetch!(:user_cache, key, fn _ -> get_by_ap_id(ap_id) end) end + def get_cached_by_id(id) do + key = "id:#{id}" + Cachex.fetch!(:user_cache, key, fn _ -> get_by_id(id) end) + end + def get_cached_by_nickname(nickname) do key = "nickname:#{nickname}" Cachex.fetch!(:user_cache, key, fn _ -> get_or_fetch_by_nickname(nickname) end) end + def get_cached_by_nickname_or_id(nickname_or_id) do + try do + # TODO: convert to UUIDs when !654 is merged + maybe_id = String.to_integer(nickname_or_id) + user = get_cached_by_id(maybe_id) + + if user == nil do + raise ArgumentError, message: "No such user id" + else + user + end + rescue + ArgumentError -> + get_cached_by_nickname(nickname_or_id) + end + end + def get_by_nickname(nickname) do Repo.get_by(User, nickname: nickname) || if Regex.match?(~r(@#{Pleroma.Web.Endpoint.host()})i, nickname) do