Sha256: fb8a16fdf97a7f95c2ad1c05c8da360a9e5fefdb68d8f8ffc3d348c20c2c5ecd

Contents?: true

Size: 796 Bytes

Versions: 1

Compression:

Stored size: 796 Bytes

Contents

# frozen_string_literal: true

module Rails
  module GraphQL
    class Type
      # DateTime uses a ISO 8601 string to exchange the value.
      class Scalar::DateTimeScalar < Scalar
        aliases :datetime

        desc 'The DateTime scalar type represents a ISO 8601 string value.'

        use :specified_by, url: 'https://www.rfc-editor.org/rfc/rfc3339'

        class << self
          def valid_input?(value)
            super && !!(Time.iso8601(value) rescue false)
          end

          def valid_output?(value)
            value.respond_to?(:to_time) && !!value.to_time
          end

          def as_json(value)
            value.to_time.iso8601
          end

          def deserialize(value)
            Time.iso8601(value)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails-graphql-1.0.0.rc1 lib/rails/graphql/type/scalar/date_time_scalar.rb