Deletion and trash operations for publishing storage.
Handles moving posts to trash, deleting language files, and deleting versions.
Summary
Functions
Deletes a specific language file from a post.
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
@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.
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.
Moves a language file to trash (legacy operation, now just deletes).
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.