somleng/somleng

View on GitHub
app/request_schemas/carrier_api/message_filter_request_schema.rb

Summary

Maintainability
A
1 hr
Test Coverage
module CarrierAPI
  class MessageFilterRequestSchema < ApplicationRequestSchema
    option :interaction_filter,
           default: -> { SchemaRules::InteractionFilter.new(decorator_class: MessageDecorator) }

    params do
      optional(:filter).value(:hash).hash do
        optional(:account).filled(:string)
        optional(:from_date).value(:time)
        optional(:to_date).value(:time)
        optional(:direction).filled(
          :str?, included_in?: MessageDecorator.directions
        )
        optional(:status).filled(
          :str?, included_in?: MessageDecorator.statuses
        )
      end
    end

    rule(:filter).validate(:date_range)

    def output
      interaction_filter.output(super.fetch(:filter, {}))
    end
  end
end