class Milvus::Client

def aliases

def aliases
  @aliases ||= Milvus::Aliases.new(client: self)
end

def collections

def collections
  @schema ||= Milvus::Collections.new(client: self)
end

def connection

def connection
  @connection ||= Faraday.new(url: "#{url}/#{API_VERSION}/") do |faraday|
    if api_key
      faraday.request :authorization, :Bearer, api_key
    end
    faraday.request :json
    faraday.response :logger, logger, {headers: true, bodies: true, errors: true}
    faraday.response :raise_error if raise_error
    faraday.response :json, content_type: /\bjson$/
    faraday.adapter adapter
  end
end

def entities

def entities
  @entities ||= Milvus::Entities.new(client: self)
end

def indexes

def indexes
  @indexes ||= Milvus::Indexes.new(client: self)
end

def initialize(

def initialize(
  url:,
  api_key: nil,
  adapter: Faraday.default_adapter,
  raise_error: false,
  logger: nil
)
  @url = url
  @api_key = api_key
  @adapter = adapter
  @raise_error = raise_error
  @logger = logger || Logger.new($stdout)
end

def partitions

def partitions
  @partitions ||= Milvus::Partitions.new(client: self)
end

def roles

def roles
  @roles ||= Milvus::Roles.new(client: self)
end

def users

def users
  @users ||= Milvus::Users.new(client: self)
end