guardedstruct

Nested DSLs

Options

NameTypeDefaultDocs
enforcebooleanfalse
opaquebooleanfalse
moduleany
errorbooleanfalse
authorized_fieldsbooleanfalse
main_validator{atom, atom}A {Module, :function} called with the attributes once every field has passed its validator; it returns {:ok, attrs} or {:error, errors}. When it is not set, a main_validator/1 defined in the module is called instead.
validate_deriveatom | list(atom)A module, or a list of modules, whose validate/3 serves the validate(...) ops the built-in ones and the derive extensions do not know. They are tried before the :validate_derive application config, which still serves the ops they do not handle.
sanitize_deriveatom | list(atom)A module, or a list of modules, whose sanitize/2 serves the sanitize(...) ops the built-in ones and the derive extensions do not know. They are tried before the :sanitize_derive application config, which still serves the ops they do not handle.
jsonbooleanfalseWhen true, derives a JSON encoder. Uses Jason.Encoder if :jason is in the user's deps; otherwise falls back to the built-in JSON.Encoder on Elixir 1.18+. No-op if neither is available.
auto_wirebooleanfalseOnly effective inside the GuardedStruct.AshResource extension. When true, injects GuardedStruct.AshResource.Change into the resource's top-level changes section so every :create and :update action automatically runs the GuardedStruct pipeline. Equivalent to writing changes do change GuardedStruct.AshResource.Change end by hand. No-op outside the Ash extension.

guardedstruct.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.virtual_field

virtual_field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
hintString.t

guardedstruct.dynamic_field

dynamic_field name

Arguments

NameTypeDefaultDocs
nameany

Options

NameTypeDefaultDocs
typeany{:map, [], []}
enforceboolean
defaultany%{}
derivesString.t"validate(map)"
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
hintString.t

guardedstruct.sub_field

sub_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean
errorboolean
authorized_fieldsboolean
main_validator{atom, atom}A {Module, :function} called with the sub_field's validated attributes, like the section option. A main_validator/1 defined in the parent module does not run for a sub_field.

guardedstruct.sub_field.conditional_field

conditional_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.sub_field.conditional_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.sub_field.conditional_field.sub_field

sub_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean
errorboolean
authorized_fieldsboolean
main_validator{atom, atom}A {Module, :function} called with the sub_field's validated attributes, like the section option. A main_validator/1 defined in the parent module does not run for a sub_field.

guardedstruct.sub_field.conditional_field.sub_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.sub_field.sub_field

sub_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean
errorboolean
authorized_fieldsboolean
main_validator{atom, atom}A {Module, :function} called with the sub_field's validated attributes, like the section option. A main_validator/1 defined in the parent module does not run for a sub_field.

guardedstruct.sub_field.sub_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.sub_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field

conditional_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.sub_field

sub_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean
errorboolean
authorized_fieldsboolean
main_validator{atom, atom}A {Module, :function} called with the sub_field's validated attributes, like the section option. A main_validator/1 defined in the parent module does not run for a sub_field.

guardedstruct.conditional_field.sub_field.conditional_field

conditional_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.sub_field.conditional_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.sub_field.conditional_field.sub_field

sub_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean
errorboolean
authorized_fieldsboolean
main_validator{atom, atom}A {Module, :function} called with the sub_field's validated attributes, like the section option. A main_validator/1 defined in the parent module does not run for a sub_field.

guardedstruct.conditional_field.sub_field.conditional_field.sub_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.sub_field.sub_field

sub_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean
errorboolean
authorized_fieldsboolean
main_validator{atom, atom}A {Module, :function} called with the sub_field's validated attributes, like the section option. A main_validator/1 defined in the parent module does not run for a sub_field.

guardedstruct.conditional_field.sub_field.sub_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.sub_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.conditional_field

conditional_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.conditional_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.conditional_field.sub_field

sub_field name, type

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatom
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean
errorboolean
authorized_fieldsboolean
main_validator{atom, atom}A {Module, :function} called with the sub_field's validated attributes, like the section option. A main_validator/1 defined in the parent module does not run for a sub_field.

guardedstruct.conditional_field.conditional_field.sub_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean

guardedstruct.conditional_field.field

field name, type

Arguments

NameTypeDefaultDocs
nameany
typeany

Options

NameTypeDefaultDocs
enforceboolean
defaultany
derivesString.t
deriveString.t
validator{atom, atom}
auto{atom, atom} | {atom, atom, any}
fromString.t
onString.t
domainString.t
structatom
structsatom | boolean
hintString.t
priorityboolean