Current section
Files
Jump to
Current section
Files
lib/meili.ex
defmodule Meili do
@moduledoc """
An idiomatic, high-performance Meilisearch client for Elixir.
"""
alias Meili.Client
@doc """
Builds a custom `Meili.Client` instance with the given options.
## Options
* `:url` or `:endpoint` - The Meilisearch base URL (default: `http://localhost:7700`).
* `:key` or `:api_key` - The API key or master key for authentication.
* `:req_options` - Custom configuration options passed directly to `Req.new/1`.
"""
def client(opts \\ []) do
Client.new(opts)
end
@doc """
Builds a `Meili.Client` from the global application environment.
"""
def default_client do
config = Application.get_all_env(:meili)
Client.new(config)
end
# --- Search Delegates ---
defdelegate search(client_or_uid, uid_or_query, query_or_opts \\ [], opts \\ []),
to: Meili.Search
defdelegate search!(client_or_uid, uid_or_query, query_or_opts \\ [], opts \\ []),
to: Meili.Search
defdelegate search_similar(client_or_uid, uid_or_body, body_or_opts \\ [], opts \\ []),
to: Meili.Search,
as: :similar
defdelegate search_similar!(client_or_uid, uid_or_body, body_or_opts \\ [], opts \\ []),
to: Meili.Search,
as: :similar!
# --- Document Delegates ---
defdelegate get_document(client_or_uid, uid_or_doc_id, doc_id_or_opts \\ [], opts \\ []),
to: Meili.Document,
as: :get
defdelegate get_document!(client_or_uid, uid_or_doc_id, doc_id_or_opts \\ [], opts \\ []),
to: Meili.Document,
as: :get!
defdelegate add_documents(client_or_uid, uid_or_documents, documents_or_opts \\ [], opts \\ []),
to: Meili.Document,
as: :add_or_replace
defdelegate add_documents!(
client_or_uid,
uid_or_documents,
documents_or_opts \\ [],
opts \\ []
), to: Meili.Document, as: :add_or_replace!
defdelegate update_documents(
client_or_uid,
uid_or_documents,
documents_or_opts \\ [],
opts \\ []
), to: Meili.Document, as: :add_or_update
defdelegate update_documents!(
client_or_uid,
uid_or_documents,
documents_or_opts \\ [],
opts \\ []
), to: Meili.Document, as: :add_or_update!
defdelegate delete_document(client_or_uid, uid_or_doc_id, doc_id_or_nil \\ nil),
to: Meili.Document,
as: :delete
defdelegate delete_document!(client_or_uid, uid_or_doc_id, doc_id_or_nil \\ nil),
to: Meili.Document,
as: :delete!
defdelegate edit_documents(client_or_uid, uid_or_queries, queries_or_opts \\ [], opts \\ []),
to: Meili.Document,
as: :edit
defdelegate edit_documents!(client_or_uid, uid_or_queries, queries_or_opts \\ [], opts \\ []),
to: Meili.Document,
as: :edit!
# --- Index Delegates ---
defdelegate create_index(client_or_uid, uid_or_opts \\ [], opts \\ []),
to: Meili.Index,
as: :create
defdelegate create_index!(client_or_uid, uid_or_opts \\ [], opts \\ []),
to: Meili.Index,
as: :create!
defdelegate delete_index(client_or_uid, uid_or_nil \\ nil), to: Meili.Index, as: :delete
defdelegate delete_index!(client_or_uid, uid_or_nil \\ nil), to: Meili.Index, as: :delete!
defdelegate get_index(client_or_uid, uid_or_nil \\ nil), to: Meili.Index, as: :get
defdelegate get_index!(client_or_uid, uid_or_nil \\ nil), to: Meili.Index, as: :get!
defdelegate list_indexes(client_or_opts \\ nil, opts \\ []), to: Meili.Index, as: :list
defdelegate list_indexes!(client_or_opts \\ nil, opts \\ []), to: Meili.Index, as: :list!
defdelegate compact_index(client_or_uid, uid_or_nil \\ nil), to: Meili.Index, as: :compact
defdelegate compact_index!(client_or_uid, uid_or_nil \\ nil), to: Meili.Index, as: :compact!
# --- Task Delegates ---
defdelegate wait_for_task(client_or_uid, uid_or_opts \\ [], opts \\ []), to: Meili.Task
defdelegate wait_for_task!(client_or_uid, uid_or_opts \\ [], opts \\ []), to: Meili.Task
# --- Token Delegates ---
defdelegate generate_tenant_token(api_key_uid, search_rules, secret \\ nil, opts \\ []),
to: Meili.Token,
as: :generate
defdelegate generate_tenant_token!(api_key_uid, search_rules, secret \\ nil, opts \\ []),
to: Meili.Token,
as: :generate!
# --- Dump Delegates ---
defdelegate create_dump(client \\ nil), to: Meili.Dump, as: :create
defdelegate create_dump!(client \\ nil), to: Meili.Dump, as: :create!
# --- Batch Delegates ---
defdelegate get_batch(client_or_uid, uid_or_nil \\ nil), to: Meili.Batch, as: :get
defdelegate get_batch!(client_or_uid, uid_or_nil \\ nil), to: Meili.Batch, as: :get!
defdelegate list_batches(client_or_opts \\ nil, opts \\ []), to: Meili.Batch, as: :list
defdelegate list_batches!(client_or_opts \\ nil, opts \\ []), to: Meili.Batch, as: :list!
# --- Chat Delegates ---
defdelegate chat_completions(
client_or_workspace,
workspace_or_body \\ nil,
body_or_opts \\ [],
opts \\ []
),
to: Meili.Chat,
as: :completions
defdelegate chat_completions!(
client_or_workspace,
workspace_or_body \\ nil,
body_or_opts \\ [],
opts \\ []
),
to: Meili.Chat,
as: :completions!
# --- Snapshot Delegates ---
defdelegate create_snapshot(client \\ nil), to: Meili.Snapshot, as: :create
defdelegate create_snapshot!(client \\ nil), to: Meili.Snapshot, as: :create!
# --- Dynamic Search Rules Delegates ---
defdelegate list_dynamic_search_rules(client_or_opts \\ nil, opts \\ []),
to: Meili.DynamicSearchRules,
as: :list
defdelegate list_dynamic_search_rules!(client_or_opts \\ nil, opts \\ []),
to: Meili.DynamicSearchRules,
as: :list!
defdelegate get_dynamic_search_rule(client_or_uid, uid_or_nil \\ nil),
to: Meili.DynamicSearchRules,
as: :get
defdelegate get_dynamic_search_rule!(client_or_uid, uid_or_nil \\ nil),
to: Meili.DynamicSearchRules,
as: :get!
defdelegate update_dynamic_search_rule(
client_or_uid,
uid_or_params \\ nil,
params_or_nil \\ nil
),
to: Meili.DynamicSearchRules,
as: :update
defdelegate update_dynamic_search_rule!(
client_or_uid,
uid_or_params \\ nil,
params_or_nil \\ nil
),
to: Meili.DynamicSearchRules,
as: :update!
defdelegate delete_dynamic_search_rule(client_or_uid, uid_or_nil \\ nil),
to: Meili.DynamicSearchRules,
as: :delete
defdelegate delete_dynamic_search_rule!(client_or_uid, uid_or_nil \\ nil),
to: Meili.DynamicSearchRules,
as: :delete!
# --- Export Delegates ---
defdelegate create_export(client_or_params, params_or_opts \\ [], opts \\ []),
to: Meili.Export,
as: :create
defdelegate create_export!(client_or_params, params_or_opts \\ [], opts \\ []),
to: Meili.Export,
as: :create!
# --- Webhook Delegates ---
defdelegate list_webhooks(client \\ nil), to: Meili.Webhook, as: :list
defdelegate list_webhooks!(client \\ nil), to: Meili.Webhook, as: :list!
defdelegate get_webhook(client_or_uuid, uuid_or_nil \\ nil), to: Meili.Webhook, as: :get
defdelegate get_webhook!(client_or_uuid, uuid_or_nil \\ nil), to: Meili.Webhook, as: :get!
defdelegate create_webhook(client_or_params, params_or_nil \\ nil),
to: Meili.Webhook,
as: :create
defdelegate create_webhook!(client_or_params, params_or_nil \\ nil),
to: Meili.Webhook,
as: :create!
defdelegate update_webhook(client_or_uuid, uuid_or_params \\ nil, params_or_nil \\ nil),
to: Meili.Webhook,
as: :update
defdelegate update_webhook!(client_or_uuid, uuid_or_params \\ nil, params_or_nil \\ nil),
to: Meili.Webhook,
as: :update!
defdelegate delete_webhook(client_or_uuid, uuid_or_nil \\ nil), to: Meili.Webhook, as: :delete
defdelegate delete_webhook!(client_or_uuid, uuid_or_nil \\ nil), to: Meili.Webhook, as: :delete!
# --- Key Delegates ---
defdelegate list_keys(client_or_opts \\ nil, opts \\ []), to: Meili.Key, as: :list
defdelegate list_keys!(client_or_opts \\ nil, opts \\ []), to: Meili.Key, as: :list!
defdelegate get_key(client_or_key, key_or_nil \\ nil), to: Meili.Key, as: :get
defdelegate get_key!(client_or_key, key_or_nil \\ nil), to: Meili.Key, as: :get!
defdelegate create_key(client_or_params, params_or_nil \\ nil), to: Meili.Key, as: :create
defdelegate create_key!(client_or_params, params_or_nil \\ nil), to: Meili.Key, as: :create!
defdelegate update_key(client_or_key, key_or_params \\ nil, params_or_nil \\ nil),
to: Meili.Key,
as: :update
defdelegate update_key!(client_or_key, key_or_params \\ nil, params_or_nil \\ nil),
to: Meili.Key,
as: :update!
defdelegate delete_key(client_or_key, key_or_nil \\ nil), to: Meili.Key, as: :delete
defdelegate delete_key!(client_or_key, key_or_nil \\ nil), to: Meili.Key, as: :delete!
# --- Settings Delegates ---
defdelegate get_settings(client_or_uid, uid_or_nil \\ nil), to: Meili.Settings, as: :get
defdelegate get_settings!(client_or_uid, uid_or_nil \\ nil), to: Meili.Settings, as: :get!
defdelegate update_settings(client_or_uid, uid_or_settings \\ [], settings_or_nil \\ []),
to: Meili.Settings,
as: :update
defdelegate update_settings!(client_or_uid, uid_or_settings \\ [], settings_or_nil \\ []),
to: Meili.Settings,
as: :update!
defdelegate reset_settings(client_or_uid, uid_or_nil \\ nil), to: Meili.Settings, as: :reset
defdelegate reset_settings!(client_or_uid, uid_or_nil \\ nil), to: Meili.Settings, as: :reset!
# --- Experimental Features Delegates ---
defdelegate get_experimental_features(client \\ nil), to: Meili.Features, as: :get
defdelegate get_experimental_features!(client \\ nil), to: Meili.Features, as: :get!
defdelegate update_experimental_features(client_or_features, features_or_nil \\ nil),
to: Meili.Features,
as: :update
defdelegate update_experimental_features!(client_or_features, features_or_nil \\ nil),
to: Meili.Features,
as: :update!
# --- Network Delegates ---
defdelegate get_network(client \\ nil), to: Meili.Network, as: :get
defdelegate get_network!(client \\ nil), to: Meili.Network, as: :get!
defdelegate update_network(client_or_params, params_or_nil \\ nil),
to: Meili.Network,
as: :update
defdelegate update_network!(client_or_params, params_or_nil \\ nil),
to: Meili.Network,
as: :update!
end