Handles async data loading for MishkaGervaz forms.
This module manages:
- Loading records for edit mode
- Creating new AshPhoenix.Form for create mode
- Loading relation options for select fields
- Async result handling
Sub-builders
DataLoader is composed of sub-builders that can be overridden:
RecordLoader- Loads/creates AshPhoenix.FormTenantResolver- Resolves tenant and actionsRelationLoader- Loads options for relation fieldsHookRunner- Executes lifecycle hooks
User Override
Override the entire data_loader module:
defmodule MyApp.Form.DataLoader do
use MishkaGervaz.Form.Web.DataLoader
def load_record(socket, state, record_id) do
# Custom loading logic
super(socket, state, record_id)
end
endOverride specific sub-builders:
defmodule MyApp.Form.DataLoader do
use MishkaGervaz.Form.Web.DataLoader,
record: MyApp.Form.RecordLoader,
relation: MyApp.Form.RelationLoader
end
Summary
Functions
See MishkaGervaz.Form.Web.DataLoader.Default.load_record/3.
See MishkaGervaz.Form.Web.DataLoader.Default.load_relation_options/3.
See MishkaGervaz.Form.Web.DataLoader.Default.new_record/2.
See MishkaGervaz.Form.Web.DataLoader.Default.search_relation_options/4.
Functions
@spec load_record( Phoenix.LiveView.Socket.t(), MishkaGervaz.Form.Web.State.t(), String.t() ) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Form.Web.DataLoader.Default.load_record/3.
@spec load_relation_options( Phoenix.LiveView.Socket.t(), MishkaGervaz.Form.Web.State.t(), atom() ) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Form.Web.DataLoader.Default.load_relation_options/3.
@spec new_record(Phoenix.LiveView.Socket.t(), MishkaGervaz.Form.Web.State.t()) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Form.Web.DataLoader.Default.new_record/2.
@spec search_relation_options( Phoenix.LiveView.Socket.t(), MishkaGervaz.Form.Web.State.t(), atom(), String.t() ) :: Phoenix.LiveView.Socket.t()
See MishkaGervaz.Form.Web.DataLoader.Default.search_relation_options/4.