Ecto-style field schema for collection metadata.
This is the internal representation for:
schema do
field :title, :string, required: true
field :date, :date, required: true
field :draft, :boolean, default: false
field :tags, {:array, :string}, default: []
endThe public DSL intentionally mirrors Ecto's field/3 shape. Astral uses
Ecto schemaless changesets internally to cast external frontmatter, apply
field defaults, and validate required fields.
Summary
Functions
Normalize string-keyed metadata through Ecto casting and validation.
Types
@type t() :: %Astral.Schema.Fields{fields: [Astral.Schema.Field.t()]}