diff options
author | Roger Braun <roger@rogerbraun.net> | 2017-04-21 00:51:09 +0200 |
---|---|---|
committer | Roger Braun <roger@rogerbraun.net> | 2017-04-21 00:51:09 +0200 |
commit | 1e88f102c49fb0a41f17f2c7f5161237e28b8baf (patch) | |
tree | 90136778cb4f146cec3a3cd8cd1074e0f623cb27 /lib/pleroma/user.ex | |
parent | e987be2de79c8eaf28ef773e12202a1eb92bf628 (diff) | |
download | pleroma-1e88f102c49fb0a41f17f2c7f5161237e28b8baf.tar.gz |
Fix specs, add some user info.
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 86b4b8b5e..3a4dd5d08 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1,7 +1,8 @@ defmodule Pleroma.User do use Ecto.Schema import Ecto.Changeset - alias Pleroma.{Repo, User} + import Ecto.Query + alias Pleroma.{Repo, User, Activity, Object} schema "users" do field :bio, :string @@ -32,6 +33,22 @@ defmodule Pleroma.User do |> validate_required([:following]) end + def user_info(%User{} = user) do + note_count_query = from a in Object, + where: fragment("? @> ?", a.data, ^%{actor: user.ap_id, type: "Note"}), + select: count(a.id) + + follower_count_query = from u in User, + where: fragment("? @> ?", u.following, ^User.ap_followers(user)), + select: count(u.id) + + %{ + following_count: length(user.following), + note_count: Repo.one(note_count_query), + follower_count: Repo.one(follower_count_query) + } + end + def register_changeset(struct, params \\ %{}) do changeset = struct |> cast(params, [:bio, :email, :name, :nickname, :password, :password_confirmation]) |