Sha256: 5a73a1c11339ae71c427142e874ad56cde9c025ce38f64afd6c3673cf0e999d4

Contents?: true

Size: 836 Bytes

Versions: 1

Compression:

Stored size: 836 Bytes

Contents

# frozen_string_literal: true

module Rails
  module GraphQL
    class Type
      # Date uses a ISO 8601 string to exchange the value.
      class Scalar::DateScalar < Scalar
        desc 'The Date 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 && !!Date.iso8601(value)
          rescue Date::Error
            false
          end

          def valid_output?(value)
            value.respond_to?(:to_date) && !!value.to_date
          rescue Date::Error
            false
          end

          def as_json(value)
            value.to_date.iso8601
          end

          def deserialize(value)
            Date.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_scalar.rb