class Appsignal::EventFormatter::Moped::QueryFormatter

def format(payload)

def format(payload)
  return unless payload[:ops]
  return if payload[:ops].empty?
  op = payload[:ops].first
  case op.class.to_s
  when "Moped::Protocol::Command"
    [
      "Command", {
        :database => op.full_collection_name,
        :selector => sanitize(op.selector, true, :mongodb)
      }.inspect
    ]
  when "Moped::Protocol::Query"
    [
      "Query", {
        :database => op.full_collection_name,
        :selector => sanitize(op.selector, false, :mongodb),
        :flags    => op.flags,
        :limit    => op.limit,
        :skip     => op.skip,
        :fields   => op.fields
      }.inspect
    ]
  when "Moped::Protocol::Delete"
    [
      "Delete", {
        :database => op.full_collection_name,
        :selector => sanitize(op.selector, false, :mongodb),
        :flags    => op.flags
      }.inspect
    ]
  when "Moped::Protocol::Insert"
    [
      "Insert", {
        :database   => op.full_collection_name,
        :documents  => sanitize(op.documents, true, :mongodb),
        :count      => op.documents.count,
        :flags      => op.flags
      }.inspect
    ]
  when "Moped::Protocol::Update"
    [
      "Update",
      {
        :database => op.full_collection_name,
        :selector => sanitize(op.selector, false, :mongodb),
        :update   => sanitize(op.update, true, :mongodb),
        :flags    => op.flags
      }.inspect
    ]
  when "Moped::Protocol::KillCursors"
    [
      "KillCursors",
      { :number_of_cursor_ids => op.number_of_cursor_ids }.inspect
    ]
  else
    [
      op.class.to_s.sub("Moped::Protocol::", ""),
      { :database => op.full_collection_name }.inspect
    ]
  end
end

def sanitize(params, only_top_level, key_sanitizer)

def sanitize(params, only_top_level, key_sanitizer)
  Appsignal::Utils::QueryParamsSanitizer.sanitize \
    params, only_top_level, key_sanitizer
end