PhoenixKit.Modules.Publishing.Storage.Deletion (phoenix_kit v1.7.33)

Copy Markdown View Source

Deletion and trash operations for publishing storage.

Handles moving posts to trash, deleting language files, and deleting versions.

Summary

Functions

Deletes an entire version of a post.

Moves a language file to trash (legacy operation, now just deletes).

Moves a post to the trash folder.

Functions

delete_language(group_slug, post_identifier, language_code, version \\ nil)

@spec delete_language(String.t(), String.t(), String.t(), integer() | nil) ::
  :ok | {:error, term()}

Deletes a specific language file from a post.

For versioned posts, specify the version. For legacy posts, version is ignored. Refuses to delete the last remaining language file.

Returns :ok on success or {:error, reason} on failure.

delete_version(group_slug, post_identifier, version)

@spec delete_version(String.t(), String.t(), integer()) :: :ok | {:error, term()}

Deletes an entire version of a post.

Moves the version folder to trash instead of permanent deletion. Refuses to delete the last remaining version or the published version.

Returns :ok on success or {:error, reason} on failure.

trash_language(group_slug, relative_path)

@spec trash_language(String.t(), String.t()) :: {:ok, String.t()} | {:error, term()}

Moves a language file to trash (legacy operation, now just deletes).

trash_post(group_slug, post_identifier)

@spec trash_post(String.t(), String.t()) :: {:ok, String.t()} | {:error, term()}

Moves a post to the trash folder.

For slug-mode groups, moves the entire post directory (all versions and languages). For timestamp-mode groups, moves the time folder.

The post directory is moved to: priv/publishing/trash/<group_slug>/<post_identifier>-<timestamp>/ (or priv/blogging/trash/... for legacy groups)

Returns {:ok, trash_path} on success or {:error, reason} on failure.