View Source ExTypesense behaviour (ExTypesense v0.7.1)
Public API functions to interact with Typesense.
If you want to implement field types for your Ecto schema,
you may need to encode the schema and add the callback get_field_types/0
:
# this example module can be found at: lib/ex_typesense/test_schema/person.ex
defmodule App.Person do
@behaviour ExTypesense
defimpl Jason.Encoder, for: __MODULE__ do
def encode(value, opts) do
value
|> Map.take([:id, :persons_id, :name, :age])
|> Enum.map(fn {key, val} ->
cond do
key === :id -> {key, to_string(Map.get(value, :id))}
key === :persons_id -> {key, Map.get(value, :id)}
true -> {key, val}
end
end)
|> Enum.into(%{})
|> Jason.Encode.map(opts)
end
end
schema "persons" do
field :name, :string
field :age, :integer
field :persons_id, :integer, virtual: true
end
@impl ExTypesense
def get_field_types do
primary_field = __MODULE__.__schema__(:source) <> "_id"
%{
default_sorting_field: primary_field,
fields:
[
%{name: primary_field, type: "int32"},
%{name: "name", type: "string"},
%{name: "age", type: "integer"}
]
}
end
end
Summary
Callbacks
A callback function for creating the schema fields in Typesense.
Callbacks
@callback get_field_types() :: map()
A callback function for creating the schema fields in Typesense.
Functions
Link to this function
delete_all_documents(conn \\ Connection.new(), collection_name)
View Source (since 0.1.0)
Link to this function
delete_collection_alias(conn \\ Connection.new(), alias_name)
View Source (since 0.1.0)
Link to this function
delete_documents_by_query(conn \\ Connection.new(), query)
View Source (since 0.1.0)
Link to this function
drop_collection(conn \\ Connection.new(), collection_name)
View Source (since 0.1.0)
Link to this function
get_collection_alias(conn \\ Connection.new(), alias_name)
View Source (since 0.1.0)
Link to this function
get_collection_name(conn \\ Connection.new(), alias_name)
View Source (since 0.1.0)
Link to this function
get_document(conn \\ Connection.new(), collection_name, document_id)
View Source (since 0.1.0)
Link to this function
index_multiple_documents(conn \\ Connection.new(), documents)
View Source (since 0.1.0)
Link to this function
multi_search_ecto(conn \\ Connection.new(), searches)
View Source (since 0.1.0)
Link to this function
search(conn \\ Connection.new(), collection_name, params)
View Source (since 0.1.0)
Link to this function
update_collection_fields(conn \\ Connection.new(), collection_name, fields)
View Source (since 0.1.0)
Link to this function
update_multiple_documents(conn \\ Connection.new(), documents)
View Source (since 0.1.0)
Link to this function
upsert_collection_alias(conn \\ Connection.new(), alias_name, collection_name)
View Source (since 0.1.0)
Link to this function