MishkaCmsMigration.Provision (Mishka CMS Migration v0.0.1)

Copy Markdown View Source

What setting the migration up on a site gives it: the permission names its runs are gated by, admin:dashboard:migration and admin:api:migration, so a site's admin can be granted them. The names are shared by every site, so the first site's install creates them and every later one finds them; the system writes them, whoever asked, through MishkaCmsCore.Install.Bootstrap.ensure_permissions/1, as MishkaCmsCore.Runtime.ExtensionProvision does for every extension. The extension ships no components, pages or snippets.

The module is the extension's plugin on installer:extension:install (MishkaCmsCore.Install.Extensions): subscribing is what makes the extension installable, and :extra is what the installer's picker shows. It answers the payload whose key is "mishka_cms_migration" with install/2's report, appended to reports, and hands every other payload on untouched. Installing needs admin:dashboard:runtime:site; a site's admin installs it only on their own site. With no actor it runs only while the CMS itself is being installed.

The extension registers no settings, so it has no tab on the Settings page.

Summary

Functions

Returns a specification to start this module under a supervisor.

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

Callback implementation for MishkaInstaller.Event.Hook.get/0.

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

Installs the migration on site_id as actor and answers the report the installer shows, in the shape of MishkaCmsCore.Runtime.ExtensionProvision.report/0 (permissions names the ones created by this install), or %{error: message} when actor may not.

Callback implementation for MishkaInstaller.Event.Hook.register/0.

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

Callback implementation for MishkaInstaller.Event.Hook.start/0.

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

Types

error_return()

@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}

okey_return()

@type okey_return() :: {:ok, struct() | map() | module() | [any()]}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

config()

@spec config() :: keyword()

config(key)

@spec config(atom()) :: any()

enable()

@spec enable() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

get()

@spec get() :: keyword()

Callback implementation for MishkaInstaller.Event.Hook.get/0.

health_check()

@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

install(site_id, actor)

@spec install(String.t(), map() | nil) ::
  MishkaCmsCore.Runtime.ExtensionProvision.report() | %{error: String.t()}

Installs the migration on site_id as actor and answers the report the installer shows, in the shape of MishkaCmsCore.Runtime.ExtensionProvision.report/0 (permissions names the ones created by this install), or %{error: message} when actor may not.

on_dependency_error(error)

@spec on_dependency_error(term()) :: term()

Optional. See MishkaInstaller.Event.Hook.on_dependency_error/1. Override to react.

register()

@spec register() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.register/0.

restart()

@spec restart() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

start()

@spec start() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.start/0.

start_link(args \\ [])

stop()

@spec stop() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

unregister()

@spec unregister() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.unregister/0.