Class: GraphQL::Types::ISO8601Date
- Inherits:
-
Schema::Scalar
- Object
- Schema::Member
- Schema::Scalar
- GraphQL::Types::ISO8601Date
- Defined in:
- lib/graphql/types/iso_8601_date.rb
Overview
This scalar takes Date
s and transmits them as strings,
using ISO 8601 format.
Use it for fields or arguments as follows:
field :published_at, GraphQL::Types::ISO8601Date, null: false
argument :deliver_at, GraphQL::Types::ISO8601Date, null: false
Alternatively, use this built-in scalar as inspiration for your own Date type.
Constant Summary
Constants included from Schema::Member::HasDirectives
Schema::Member::HasDirectives::NO_DIRECTIVES
Constants included from Schema::Member::GraphQLTypeNames
Schema::Member::GraphQLTypeNames::Boolean, Schema::Member::GraphQLTypeNames::ID, Schema::Member::GraphQLTypeNames::Int
Class Method Summary collapse
Methods inherited from Schema::Scalar
default_scalar, default_scalar?, kind, specified_by_url, validate_non_null_input
Methods included from Schema::Member::ValidatesInput
#coerce_isolated_input, #coerce_isolated_result, #valid_input?, #valid_isolated_input?, #validate_input
Methods included from Schema::Member::BaseDSLMethods
#accessible?, #authorized?, #default_graphql_name, #description, #graphql_name, #introspection, #introspection?, #mutation, #name, #overridden_graphql_name, #visible?
Methods included from Schema::Member::BaseDSLMethods::ConfigurationExtension
Methods included from Schema::Member::TypeSystemHelpers
#kind, #list?, #non_null?, #to_list_type, #to_non_null_type, #to_type_signature
Methods included from Schema::Member::Scoped
Methods included from Schema::Member::RelayShortcuts
#connection_type, #connection_type_class, #edge_type, #edge_type_class
Methods included from Schema::Member::HasPath
Methods included from Schema::Member::HasAstNode
Methods included from Schema::Member::HasDirectives
#directive, #directives, #remove_directive
Class Method Details
.coerce_input(value, ctx) ⇒ Date
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/graphql/types/iso_8601_date.rb', line 26 def self.coerce_input(value, ctx) if value.is_a?(::Date) value elsif value.is_a?(::DateTime) value.to_date elsif value.is_a?(::Time) value.to_date else Date.iso8601(value) end rescue ArgumentError, TypeError err = GraphQL::DateEncodingError.new(value) ctx.schema.type_error(err, ctx) end |
.coerce_result(value, _ctx) ⇒ String
20 21 22 |
# File 'lib/graphql/types/iso_8601_date.rb', line 20 def self.coerce_result(value, _ctx) Date.parse(value.to_s).iso8601 end |