lib/connectors/gitlab/adapter.rb (37 lines of code) (raw):
# frozen_string_literal: true
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License;
# you may not use this file except in compliance with the Elastic License.
#
require 'hashie/mash'
require 'active_support/core_ext/hash/indifferent_access'
require 'connectors/base/adapter'
module Connectors
module GitLab
class Adapter < Connectors::Base::Adapter
# it's important to have this to generate ID converters between the GitLab ID and the
# Enterprise Search document ID. The Enterprise Search document ID will be prefixed with the service type,
# in our case - `gitlab`.
generate_id_helpers :gitlab, 'gitlab'
def self.to_es_document(type, source_doc)
source_doc = source_doc.with_indifferent_access
result = {}
case type.to_sym
when :project
result.merge!(
{
:url => source_doc[:web_url],
:body => source_doc[:description],
:title => source_doc[:name],
:created_at => source_doc[:created_at],
:last_modified_at => source_doc[:last_activity_at],
:visibility => source_doc[:visibility],
:namespace => if source_doc[:namespace].nil?
nil
else
source_doc[:namespace][:name]
end
}
)
else
# don't remap
result.merge!(source_doc)
end
result[:id] = gitlab_id_to_es_id(source_doc[:id])
result[:type] = type
result
end
end
end
end