Spark DSL extension declaring Xitdb MDM collection mappings, synced field
projections, secondary B+Tree indexes, and lock actions on an Ash.Resource.
Example
defmodule MyApp.Accounts.Organization do
use Ash.Resource,
domain: MyApp.Accounts,
extensions: [Xitdb.Ash.Resource]
xitdb do
store MyApp.MDM.Store
collection :organizations
merge_redirect_collection :org_merged_into
locked_ids_set :locked_org_ids
editable_fields [:name, :domain, :headquarters]
passthru_fields [:creatio_id, :parent_organization_id]
computed_xitdb_fields [:normalized_name, :activity_count]
field_aliases parent_organization_id: :parent_org_id
indexes(
domain: "domain->org_id",
normalized_name: "norm_name->org_id",
creatio_id: "creatio_id->org_id"
)
end
end