Add collection_field helper to BaseObject
Add a helper method in BaseObject to define fields with `connection_type`, reducing code duplication and giving more context about the type of fields.
This commit is contained in:
@@ -30,5 +30,9 @@ module Types
|
|||||||
argument :id, ID, required: true, default_value: false
|
argument :id, ID, required: true, default_value: false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.collection_field(field_name, type, ...)
|
||||||
|
field(field_name, type.connection_type, ...)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ module Types
|
|||||||
field :title, String, null: true
|
field :title, String, null: true
|
||||||
field :description, String, null: true
|
field :description, String, null: true
|
||||||
field :location, String, null: true
|
field :location, String, null: true
|
||||||
field :comments, Types::CommentType.connection_type, null: true
|
collection_field :comments, Types::CommentType, null: true
|
||||||
field :comments_count, Integer, null: true
|
field :comments_count, Integer, null: true
|
||||||
field :milestones, Types::MilestoneType.connection_type, null: true
|
collection_field :milestones, Types::MilestoneType, null: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ module Types
|
|||||||
field :id, ID, null: false
|
field :id, ID, null: false
|
||||||
field :name, String, null: true
|
field :name, String, null: true
|
||||||
field :phase, String, null: true
|
field :phase, String, null: true
|
||||||
field :investments, Types::BudgetInvestmentType.connection_type, "Returns all investments", null: false
|
collection_field :investments, Types::BudgetInvestmentType, "Returns all investments", null: false
|
||||||
object_by_id_field :investment, Types::BudgetInvestmentType, "Returns investment for ID", null: false
|
object_by_id_field :investment, Types::BudgetInvestmentType, "Returns investment for ID", null: false
|
||||||
|
|
||||||
def investments
|
def investments
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ module Types
|
|||||||
field :id, ID, null: false
|
field :id, ID, null: false
|
||||||
field :public_author, Types::UserType, null: true
|
field :public_author, Types::UserType, null: true
|
||||||
field :public_created_at, String, null: true
|
field :public_created_at, String, null: true
|
||||||
field :votes_for, Types::VoteType.connection_type, null: true
|
collection_field :votes_for, Types::VoteType, null: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ module Types
|
|||||||
field :cached_votes_down, Integer, null: true
|
field :cached_votes_down, Integer, null: true
|
||||||
field :cached_votes_total, Integer, null: true
|
field :cached_votes_total, Integer, null: true
|
||||||
field :cached_votes_up, Integer, null: true
|
field :cached_votes_up, Integer, null: true
|
||||||
field :comments, Types::CommentType.connection_type, null: true
|
collection_field :comments, Types::CommentType, null: true
|
||||||
field :comments_count, Integer, null: true
|
field :comments_count, Integer, null: true
|
||||||
field :confidence_score, Integer, null: true
|
field :confidence_score, Integer, null: true
|
||||||
field :description, String, null: true
|
field :description, String, null: true
|
||||||
@@ -11,9 +11,9 @@ module Types
|
|||||||
field :id, ID, null: false
|
field :id, ID, null: false
|
||||||
field :public_author, Types::UserType, null: true
|
field :public_author, Types::UserType, null: true
|
||||||
field :public_created_at, String, null: true
|
field :public_created_at, String, null: true
|
||||||
field :tags, Types::TagType.connection_type, null: true
|
collection_field :tags, Types::TagType, null: true
|
||||||
field :title, String, null: true
|
field :title, String, null: true
|
||||||
field :votes_for, Types::VoteType.connection_type, null: true
|
collection_field :votes_for, Types::VoteType, null: true
|
||||||
|
|
||||||
def tags
|
def tags
|
||||||
object.tags.public_for_api
|
object.tags.public_for_api
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
module Types
|
module Types
|
||||||
class ProposalType < Types::BaseObject
|
class ProposalType < Types::BaseObject
|
||||||
field :cached_votes_up, Integer, null: true
|
field :cached_votes_up, Integer, null: true
|
||||||
field :comments, Types::CommentType.connection_type, null: true
|
collection_field :comments, Types::CommentType, null: true
|
||||||
field :comments_count, Integer, null: true
|
field :comments_count, Integer, null: true
|
||||||
field :confidence_score, Integer, null: true
|
field :confidence_score, Integer, null: true
|
||||||
field :description, String, null: true
|
field :description, String, null: true
|
||||||
@@ -9,18 +9,18 @@ module Types
|
|||||||
field :geozone_id, Integer, null: true
|
field :geozone_id, Integer, null: true
|
||||||
field :hot_score, Integer, null: true
|
field :hot_score, Integer, null: true
|
||||||
field :id, ID, null: false
|
field :id, ID, null: false
|
||||||
field :proposal_notifications, Types::ProposalNotificationType.connection_type, null: true
|
collection_field :proposal_notifications, Types::ProposalNotificationType, null: true
|
||||||
field :public_author, Types::UserType, null: true
|
field :public_author, Types::UserType, null: true
|
||||||
field :public_created_at, String, null: true
|
field :public_created_at, String, null: true
|
||||||
field :retired_at, GraphQL::Types::ISO8601DateTime, null: true
|
field :retired_at, GraphQL::Types::ISO8601DateTime, null: true
|
||||||
field :retired_explanation, String, null: true
|
field :retired_explanation, String, null: true
|
||||||
field :retired_reason, String, null: true
|
field :retired_reason, String, null: true
|
||||||
field :summary, String, null: true
|
field :summary, String, null: true
|
||||||
field :tags, Types::TagType.connection_type, null: true
|
collection_field :tags, Types::TagType, null: true
|
||||||
field :title, String, null: true
|
field :title, String, null: true
|
||||||
field :video_url, String, null: true
|
field :video_url, String, null: true
|
||||||
field :votes_for, Types::VoteType.connection_type, null: true
|
collection_field :votes_for, Types::VoteType, null: true
|
||||||
field :milestones, Types::MilestoneType.connection_type, null: true
|
collection_field :milestones, Types::MilestoneType, null: true
|
||||||
|
|
||||||
def tags
|
def tags
|
||||||
object.tags.public_for_api
|
object.tags.public_for_api
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
module Types
|
module Types
|
||||||
class QueryType < Types::BaseObject
|
class QueryType < Types::BaseObject
|
||||||
def self.collection_and_object_by_id_fields(name, type)
|
def self.collection_and_object_by_id_fields(name, type)
|
||||||
field name.to_s.pluralize.to_sym,
|
collection_field name.to_s.pluralize.to_sym, type, "Returns all #{name.to_s.pluralize}", null: false
|
||||||
type.connection_type,
|
|
||||||
"Returns all #{name.to_s.pluralize}",
|
|
||||||
null: false
|
|
||||||
object_by_id_field name, type, "Returns #{name} for ID", null: false
|
object_by_id_field name, type, "Returns #{name} for ID", null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
module Types
|
module Types
|
||||||
class UserType < Types::BaseObject
|
class UserType < Types::BaseObject
|
||||||
field :id, ID, null: false
|
field :id, ID, null: false
|
||||||
field :public_comments, Types::CommentType.connection_type, null: true
|
collection_field :public_comments, Types::CommentType, null: true
|
||||||
field :public_debates, Types::DebateType.connection_type, null: true
|
collection_field :public_debates, Types::DebateType, null: true
|
||||||
field :public_proposals, Types::ProposalType.connection_type, null: true
|
collection_field :public_proposals, Types::ProposalType, null: true
|
||||||
field :username, String, null: true
|
field :username, String, null: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user