MishkaCmsCore.Runtime.Resources.Embeddeds.Helper (Mishka CMS Core v0.0.1)

Copy Markdown View Source

Embedded resource for helper function definitions in runtime resources.

This embedded resource represents helper functions that can be defined within Pages, Layouts, Components, and Error Pages. Helpers allow runtime resources to include custom Elixir functions that enhance template functionality, providing reusable logic for data transformation, formatting, and calculations.

Each helper consists of a function name, argument list, and the function body code. These are compiled into the runtime module as actual Elixir functions, making them available for use within templates and event handlers. The embedded nature means helpers are stored as JSON within the parent resource's database record.

Helpers enable dynamic functionality without requiring code deployment, allowing CMS users to extend the system's capabilities through the UI. Common use cases include date formatting, string manipulation, calculation helpers, and view-specific utility functions that simplify template logic.

Summary

Functions

Callback implementation for Ash.Type.equal?/2.

Validates that the keys in the provided input are valid for at least one action on the resource.

Same as input/1, except restricts the keys to values accepted by the action provided.

Callback implementation for Ash.Type.storage_type/1.

Types

t()

@type t() :: %MishkaCmsCore.Runtime.Resources.Embeddeds.Helper{
  __lateral_join_source__: term(),
  __meta__: term(),
  __metadata__: term(),
  __order__: term(),
  aggregates: term(),
  args: term(),
  attrs: term(),
  calculations: term(),
  code: term(),
  discriminators: term(),
  name: term(),
  signature: term(),
  slots: term()
}

Functions

apply_constraints_array(term, constraints)

Callback implementation for Ash.Type.apply_constraints_array/2.

cast_input(input, constraints)

Callback implementation for Ash.Type.cast_input/2.

cast_stored(value, constraints)

Callback implementation for Ash.Type.cast_stored/2.

check_atomic(value, constraints, list? \\ false)

default_short_name()

dump_to_native(value, _)

Callback implementation for Ash.Type.dump_to_native/2.

equal?(left, right)

Callback implementation for Ash.Type.equal?/2.

fetch_key(map, atom)

get_rewrites(merged_load, calculation, path, _)

Callback implementation for Ash.Type.get_rewrites/4.

handle_change(old_value, new_value, constraints)

Callback implementation for Ash.Type.handle_change/3.

handle_change?()

handle_change_array(old_values, new_values, constraints)

Callback implementation for Ash.Type.handle_change_array/3.

input(opts)

@spec input(values :: map() | Keyword.t()) :: map() | no_return()

Validates that the keys in the provided input are valid for at least one action on the resource.

Raises a KeyError error at compile time if not. This exists because generally a struct should only ever be created by Ash as a result of a successful action. You should not be creating records manually in code, e.g %MyResource{value: 1, value: 2}. Generally that is fine, but often with embedded resources it is nice to be able to validate the keys that are being provided, e.g

Resource
|> Ash.Changeset.for_create(:create, %{embedded: EmbeddedResource.input(foo: 1, bar: 2)})
|> Ash.create()

input(opts, action)

@spec input(values :: map() | Keyword.t(), action :: atom()) :: map() | no_return()

Same as input/1, except restricts the keys to values accepted by the action provided.

load(record, load, constraints, context)

Callback implementation for Ash.Type.load/4.

prepare_change(old_value, new_value, constraints)

Callback implementation for Ash.Type.prepare_change/3.

prepare_change?()

prepare_change_array(old_values, new_uncasted_values, constraints)

Callback implementation for Ash.Type.prepare_change_array/3.

rewrite(value, rewrites, constraints)

Callback implementation for Ash.Type.rewrite/3.

storage_type(_)

Callback implementation for Ash.Type.storage_type/1.