class GraphQL::Types::ISO8601DateTime

This scalar takes `DateTime`s and transmits them as strings, using ISO 8601 format.

Use it for fields or arguments as follows:

field :created_at, GraphQL::Types::ISO8601DateTime, null: false

argument :deliver_at, GraphQL::Types::ISO8601DateTime, null: false

Alternatively, use this built-in scalar as inspiration for your own DateTime type.

Constants

DEFAULT_TIME_PRECISION

It's not compatible with Rails' default, i.e. ActiveSupport::JSON::Encoder.time_precision (3 by default)

Public Class Methods

coerce_input(str_value, _ctx) click to toggle source

@param str_value [String] @return [DateTime]

# File lib/graphql/types/iso_8601_date_time.rb, line 40
def self.coerce_input(str_value, _ctx)
  DateTime.iso8601(str_value)
rescue ArgumentError
  # Invalid input
  nil
end
coerce_result(value, _ctx) click to toggle source

@param value [DateTime] @return [String]

# File lib/graphql/types/iso_8601_date_time.rb, line 34
def self.coerce_result(value, _ctx)
  value.iso8601(time_precision)
end
time_precision() click to toggle source

@return [Integer]

# File lib/graphql/types/iso_8601_date_time.rb, line 23
def self.time_precision
  @time_precision || DEFAULT_TIME_PRECISION
end
time_precision=(value) click to toggle source

@param [Integer] value

# File lib/graphql/types/iso_8601_date_time.rb, line 28
def self.time_precision=(value)
  @time_precision = value
end