# `MishkaGervaz.Table.Web.DataLoader.HookRunner`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/table/web/data_loader/hook_runner.ex#L1)

Executes hooks during data loading.

## Overridable Functions

- `run_hook/3` - Run a hook by name with arguments
- `apply_hook_result/2` - Apply hook result to query

## User Override

    defmodule MyApp.Table.DataLoader.HookRunner do
      use MishkaGervaz.Table.Web.DataLoader.HookRunner

      def run_hook(hooks, hook_name, args) do
        # Add logging
        Logger.debug("Running hook: #{hook_name}")
        result = super(hooks, hook_name, args)
        Logger.debug("Hook result: #{inspect(result)}")
        result
      end
    end

See `MishkaGervaz.Table.Web.DataLoader`,
`MishkaGervaz.Table.Web.DataLoader.Helpers`,
`MishkaGervaz.Table.Dsl.Hooks` (where hooks are declared),
`MishkaGervaz.Table.Entities.ActionHook` (the per-action hook entity),
and the sibling sub-builders `QueryBuilder`, `FilterParser`,
`PaginationHandler`, `TenantResolver`, `RelationLoader`.

---

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