Class: CommandTower::Deserializers::Admin::Users::ListDeserializer

Inherits:
CommandTower::Deserializers::ApplicationDeserializer show all
Defined in:
app/deserializers/command_tower/deserializers/admin/users.rb

Defined Under Namespace

Classes: Input

Constant Summary collapse

DEFAULT_LIMIT =
50
MAX_LIMIT =
100
MAX_SEARCH_LENGTH =
100
TOOL_ID =
"users"

Instance Method Summary collapse

Methods inherited from CommandTower::Deserializers::ApplicationDeserializer

call

Instance Method Details

#call(params) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/deserializers/command_tower/deserializers/admin/users.rb', line 30

def call(params)
  limit = pagination_integer(
    fetch_param(params, :limit).value,
    default: DEFAULT_LIMIT,
    minimum: 1,
    maximum: MAX_LIMIT
  )
  return failure(errors: { message: "invalid_limit" }) if limit.nil?

  offset = pagination_integer(fetch_param(params, :offset).value, default: 0, minimum: 0)
  return failure(errors: { message: "invalid_offset" }) if offset.nil?

  search = optional_search(fetch_param(params, :search).value)
  return search if deserializer_result?(search)

  scope_value = CommandTower::Deserializers::Admin::ScopeParameter.extract(params, tool_id: TOOL_ID)

  success(Input.new(limit:, offset:, search:, scope_value:))
end