elasticsearch-persistence/lib/elasticsearch/persistence/repository/dsl.rb (39 lines of code) (raw):
# Licensed to Elasticsearch B.V. under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Elasticsearch B.V. licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
module Elasticsearch
module Persistence
module Repository
# Include this module to get class-level methods for repository configuration.
#
# @since 6.0.0
module DSL
def self.included(base)
base.send(:extend, Elasticsearch::Model::Indexing::ClassMethods)
base.send(:extend, ClassMethods)
end
# These methods are necessary to define at the class-level so that the methods available
# via Elasticsearch::Model::Indexing::ClassMethods have the references they depend on.
#
# @since 6.0.0
module ClassMethods
# Get or set the class-level index name setting.
#
# @example
# MyRepository.index_name
#
# @return [ String, Symbol ] _name The repository's index name.
#
# @since 6.0.0
def index_name(_name = nil)
@index_name ||= (_name || DEFAULT_INDEX_NAME)
end
# Get or set the class-level setting for the class used by the repository when deserializing.
#
# @example
# MyRepository.klass
#
# @return [ Class ] _class The repository's klass for deserializing.
#
# @since 6.0.0
def klass(_class = nil)
instance_variables.include?(:@klass) ? @klass : @klass = _class
end
# Get or set the class-level setting for the client used by the repository.
#
# @example
# MyRepository.client
#
# @return [ Class ] _client The repository's client.
#
# @since 6.0.0
def client(_client = nil)
@client ||= (_client || Elasticsearch::Client.new)
end
def create_index!(*args)
__raise_not_implemented_error(__method__)
end
def delete_index!(*args)
__raise_not_implemented_error(__method__)
end
def refresh_index!(*args)
__raise_not_implemented_error(__method__)
end
def index_exists?(*args)
__raise_not_implemented_error(__method__)
end
private
def __raise_not_implemented_error(_method_)
raise NotImplementedError, "The '#{_method_}' method is not implemented on the Repository class."
end
end
end
end
end
end