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