DustEcto (DustEcto v0.1.2)

Copy Markdown View Source

Ecto-shaped facade over Dust — DustEcto.Schema plus DustEcto.Repo, designed to feel like the parts of Ecto.Schema and Ecto.Repo that map cleanly onto Dust's flat KV model.

See the design doc at docs/plans/2026-05-10-dust-ecto-design.md in the dust monorepo for the rationale, scope, and trade-offs.

Quick start

defmodule MyApp.Reading.Link do
  use DustEcto.Schema,
    prefix: ["links"],
    required: [:slug, :title, :url]

  embedded_schema do
    field :title, :string
    field :url, :string
    field :note, :string
  end

  def changeset(link, attrs) do
    link
    |> cast(attrs, [:slug, :title, :url, :note])
    |> validate_required(__dust_required_fields__())
    |> validate_dust_slug(:slug)
  end
end

# Configure once at startup:
#   config :dustlayer_ecto,
#     store: System.get_env("DUST_STORE"),
#     dust_facade: MyApp.Dust   # WS-mode (recommended)
#     # OR for HTTP-only:
#     # base_url: "https://dustlayer.io",
#     # token: System.get_env("DUST_TOKEN")

Reading.Link.changeset(%Reading.Link{}, %{slug: "x", title: "X", url: "http://x"})
|> DustEcto.Repo.insert()
# => {:ok, %Reading.Link{...}}

Summary

Functions

Returns the package version string.

Functions

version()

Returns the package version string.