12345678910111213141516171819202122232425262728293031 |
- # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
- module Gql::Queries
- class Search < BaseQuery
- description 'Generic object search'
- argument :search, String, description: 'What to search for'
- argument :only_in, Gql::Types::Enum::SearchableModelsType, description: 'Which model to search in, e.g. Ticket'
- argument :limit, Integer, required: false, description: 'How many entries to find at maximum'
- argument :offset, Integer, required: false, description: 'Offset to use for pagination'
- type Gql::Types::SearchResultType, null: false
- def resolve(search:, only_in:, offset: 0, limit: 10)
- search_result = Service::Search.new(
- current_user: context.current_user,
- query: search,
- objects: [only_in],
- options: { offset:, limit:, }
- ).execute.result[only_in]
- return { total_count: 0, items: [] } if !search_result
- {
- total_count: search_result[:total_count],
- items: search_result[:objects],
- }
- end
- end
- end
|