X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;fp=lib%2Fpleroma%2Fuser.ex;h=23be6276ebe6abce6bffa9567d4c5a7d6225b600;hb=c48c381e909240dcece9f961e4728fa712d089cc;hp=65925caed0aa3eee377b8264bbaa277e269b4bf9;hpb=6cf7c132282e612514af992c6dea0b03ee5b678d;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 65925caed..23be6276e 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1,8 +1,10 @@ defmodule Pleroma.User do use Ecto.Schema + import Ecto.{Changeset, Query} alias Pleroma.{Repo, User, Object, Web} alias Comeonin.Pbkdf2 + alias Pleroma.Web.OStatus schema "users" do field :bio, :string @@ -15,6 +17,8 @@ defmodule Pleroma.User do field :following, {:array, :string}, default: [] field :ap_id, :string field :avatar, :map + field :local, :boolean, default: true + field :info, :map, default: %{} timestamps() end @@ -118,6 +122,27 @@ defmodule Pleroma.User do 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_by_nickname(nickname) do + Repo.get_by(User, nickname: nickname) + end + + def get_cached_user_info(user) do + 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