Selecto.ViewPublisher (Selecto v0.4.5)

Copy Markdown

Validates Selecto-authored published view specs before any DDL generation.

This keeps publication constraints separate from ordinary runtime query validation so domains can register stable SQL view contracts explicitly.

Summary

Types

publish_result()

@type publish_result() ::
  {:ok,
   %{
     sql: String.t(),
     ddl: String.t(),
     kind: atom(),
     database_name: String.t(),
     index_statements: [String.t()]
   }}
  | {:error, [String.t()]}

refresh_result()

@type refresh_result() :: :ok | {:error, term()}

validation_result()

@type validation_result() :: :ok | {:error, [String.t()]}

Functions

build_sql(domain, spec)

@spec build_sql(Selecto.Types.domain(), map()) :: publish_result()

ddl_for(atom, database_name, sql)

@spec ddl_for(atom(), String.t(), String.t()) :: String.t()

index_statements(spec)

@spec index_statements(map()) :: [String.t()]

refresh(domain, spec, adapter, connection, opts \\ [])

@spec refresh(Selecto.Types.domain(), map(), module(), term(), keyword()) ::
  refresh_result()

refresh_sql(database_name, opts \\ [])

@spec refresh_sql(
  String.t(),
  keyword()
) :: String.t()

validate(domain, spec)

@spec validate(Selecto.Types.domain(), map()) :: validation_result()