import Ecto.Changeset
import Ecto.Query
alias Pleroma.{Repo, User, Activity, Object}
+ alias Pleroma.Web.OStatus
schema "users" do
field :bio, :string
def get_cached_by_nickname(nickname) do
key = "nickname:#{nickname}"
- Cachex.get!(:user_cache, key, fallback: fn(_) -> Repo.get_by(User, nickname: nickname) end)
+ Cachex.get!(:user_cache, key, fallback: fn(_) -> get_or_fetch_by_nickname(nickname) end)
end
- def get_cached_by_nickname(nickname) do
+ def get_by_nickname(nickname) do
Repo.get_by(User, nickname: nickname)
end
key = "user_info:#{user.id}"
Cachex.get!(:user_cache, key, fallback: fn(_) -> user_info(user) end)
end
+
+ def get_or_fetch_by_nickname(nickname) do
+ with %User{} = user <- get_by_nickname(nickname) do
+ user
+ else _e ->
+ with [nick, domain] <- String.split(nickname, "@"),
+ {:ok, user} <- OStatus.make_user(nickname) do
+ user
+ else _e -> nil
+ end
+ end
+ end
end