Introduce the group activity section
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
78
lib/graphql/schema/activity.ex
Normal file
78
lib/graphql/schema/activity.ex
Normal file
@@ -0,0 +1,78 @@
|
||||
defmodule Mobilizon.GraphQL.Schema.ActivityType do
|
||||
@moduledoc """
|
||||
Schema representation for Activity
|
||||
"""
|
||||
use Absinthe.Schema.Notation
|
||||
|
||||
alias Mobilizon.Actors.{Actor, Member}
|
||||
alias Mobilizon.Discussions.Discussion
|
||||
alias Mobilizon.Events.Event
|
||||
alias Mobilizon.Posts.Post
|
||||
alias Mobilizon.Resources.Resource
|
||||
|
||||
enum :activity_type do
|
||||
value(:event, description: "Activities concerning events")
|
||||
value(:post, description: "Activities concerning posts")
|
||||
value(:discussion, description: "Activities concerning discussions")
|
||||
value(:resource, description: "Activities concerning resources")
|
||||
value(:group, description: "Activities concerning group settings")
|
||||
value(:member, description: "Activities concerning members")
|
||||
end
|
||||
|
||||
object :activity_param_item do
|
||||
field(:key, :string)
|
||||
field(:value, :string)
|
||||
end
|
||||
|
||||
interface :activity_object do
|
||||
field(:id, :id)
|
||||
|
||||
resolve_type(fn
|
||||
%Event{}, _ ->
|
||||
:event
|
||||
|
||||
%Post{}, _ ->
|
||||
:post
|
||||
|
||||
%Actor{type: "Group"}, _ ->
|
||||
:group
|
||||
|
||||
%Member{}, _ ->
|
||||
:member
|
||||
|
||||
%Resource{}, _ ->
|
||||
:resource
|
||||
|
||||
%Discussion{}, _ ->
|
||||
:discussion
|
||||
|
||||
%Actor{type: :Group}, _ ->
|
||||
:group
|
||||
|
||||
_, _ ->
|
||||
nil
|
||||
end)
|
||||
end
|
||||
|
||||
@desc """
|
||||
A paginated list of activity items
|
||||
"""
|
||||
object :paginated_activity_list do
|
||||
field(:elements, list_of(:activity), description: "A list of activities")
|
||||
field(:total, :integer, description: "The total number of elements in the list")
|
||||
end
|
||||
|
||||
object :activity do
|
||||
field(:id, :id, description: "The activity item ID")
|
||||
field(:inserted_at, :datetime, description: "When was the activity inserted")
|
||||
field(:priority, :integer)
|
||||
field(:type, :activity_type)
|
||||
field(:subject, :string)
|
||||
field(:subject_params, list_of(:activity_param_item))
|
||||
field(:message, :string)
|
||||
field(:message_params, list_of(:activity_param_item))
|
||||
field(:object, :activity_object)
|
||||
field(:author, :actor)
|
||||
field(:group, :group)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user