# ===============================================
# SEARCH
# ===============================================

extend type Query {
  search: SearchQuery
}

extend type Mutation {
  search: SearchMutation
}

# -----------------------------------------------
# QUERIES
# -----------------------------------------------

type SearchQuery {
  searchEngines(
    filter: String
    orderBy: String
  ): [SearchEngine] @auth(requires: ["manage:system"])
}

# -----------------------------------------------
# MUTATIONS
# -----------------------------------------------

type SearchMutation {
  updateSearchEngines(
    engines: [SearchEngineInput]
  ): DefaultResponse @auth(requires: ["manage:system"])

  rebuildIndex: DefaultResponse @auth(requires: ["manage:system"])
}

# -----------------------------------------------
# TYPES
# -----------------------------------------------

type SearchEngine {
  isEnabled: Boolean!
  key: String!
  title: String!
  description: String
  logo: String
  website: String
  isAvailable: Boolean
  config: [KeyValuePair]
}

input SearchEngineInput {
  isEnabled: Boolean!
  key: String!
  config: [KeyValuePairInput]
}