# `MishkaGervaz.Form.Web.DataLoader.RecordLoader`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/form/web/data_loader/record_loader.ex#L1)

Loads records for edit mode and creates AshPhoenix.Form for forms.

## Overridable Functions

- `load_for_edit/3` - Load a record and build an AshPhoenix.Form for editing
- `new_for_create/2` - Build an empty AshPhoenix.Form for creating
- `build_form/3` - Build an AshPhoenix.Form from a record or resource

## User Override

    defmodule MyApp.Form.RecordLoader do
      use MishkaGervaz.Form.Web.DataLoader.RecordLoader

      def load_for_edit(state, record_id, opts) do
        # Custom loading with extra preloads
        super(state, record_id, opts)
      end
    end

Top-level helpers `keyword_put_if_set/3` and
`resolve_tenant_from_record/2` are public so user overrides can reuse
them without redefining.

See `MishkaGervaz.Form.Web.DataLoader`,
`MishkaGervaz.Form.Web.DataLoader.Helpers`,
`MishkaGervaz.Form.Web.State` (for `State.get_action/2` and
`State.get_preloads/1`), and the sibling sub-builders `RelationLoader`,
`TenantResolver`, `HookRunner`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
