diff options
author | Roger Braun <roger@rogerbraun.net> | 2017-05-05 11:46:59 +0200 |
---|---|---|
committer | Roger Braun <roger@rogerbraun.net> | 2017-05-05 11:46:59 +0200 |
commit | c48c381e909240dcece9f961e4728fa712d089cc (patch) | |
tree | 6aa2a1edbfe5d15860ab5090c645bc9ba312ab96 /lib/pleroma/user.ex | |
parent | 6cf7c132282e612514af992c6dea0b03ee5b678d (diff) | |
parent | c85998ab8a21f042ab57345a7baa9e1e27c308d1 (diff) | |
download | pleroma-c48c381e909240dcece9f961e4728fa712d089cc.tar.gz |
Merge branch 'develop' into dtluna/pleroma-refactor/1
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 27 |
1 files changed, 26 insertions, 1 deletions
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 |