PhoenixKitDocumentCreator.Documents.Composer (PhoenixKitDocumentCreator v0.4.2)

Copy Markdown View Source

Composition orchestration for documents built from multiple template sections.

Public entry point: compose/2. This module is the implementation behind PhoenixKitDocumentCreator.Documents.create_composed_document/2.

Summary

Types

section_input()

@type section_input() :: %{
  template_uuid: UUIDv7.t(),
  position: non_neg_integer(),
  variable_values: map(),
  image_params: map()
}

Functions

compose(sections, opts)

@spec compose(
  [section_input()],
  keyword()
) :: {:ok, PhoenixKitDocumentCreator.Schemas.Document.t()} | {:error, term()}

validate_sections(sections, opts)

@spec validate_sections(
  [section_input()],
  keyword()
) ::
  :ok
  | {:error,
     :empty_sections
     | {:duplicate_positions, [non_neg_integer()]}
     | {:unknown_templates, [UUIDv7.t()]}
     | {:unpublished_templates, [UUIDv7.t()]}}