PhoenixKitDocumentCreator.Documents.Composer (PhoenixKitDocumentCreator v0.9.1)

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()]}}