Shared helper functions for publishing storage.
Contains audit metadata helpers, path utilities, and other common functionality used across storage modules.
Summary
Functions
Applies creation audit metadata to a metadata map. Sets both created_by and updated_by fields.
Applies update audit metadata to a metadata map. Only sets updated_by fields.
Builds updated metadata for a post update operation.
Extracts date and time from a relative path. Handles both legacy (4 parts) and versioned (5 parts) paths.
Extracts date and time from a relative path, raising on error.
Extracts language code from a path (e.g., "blog/post/en.phk" -> "en").
Floors a DateTime to the minute (sets seconds and microseconds to 0).
Formats a Time struct as a time folder string (HH:MM).
Gets slug from metadata, falling back to provided default if nil or empty.
Gets a value from metadata, checking both atom and string keys.
Parses a time folder string (HH:MM) into a Time struct.
Builds a relative path for a timestamp-mode post with language.
Builds a relative path for a versioned timestamp-mode post with language.
Resolves allow_version_access from params or existing metadata.
Resolves featured_image_uuid from params or existing metadata.
Resolves previous_url_slugs, tracking old slugs for 301 redirects. When url_slug changes, the old value is added to previous_url_slugs.
Resolves url_slug from params or existing metadata. Empty string clears the custom slug.
Functions
Applies creation audit metadata to a metadata map. Sets both created_by and updated_by fields.
Applies update audit metadata to a metadata map. Only sets updated_by fields.
Builds updated metadata for a post update operation.
Extracts date and time from a relative path. Handles both legacy (4 parts) and versioned (5 parts) paths.
Extracts date and time from a relative path, raising on error.
Extracts language code from a path (e.g., "blog/post/en.phk" -> "en").
@spec floor_to_minute(DateTime.t()) :: DateTime.t()
Floors a DateTime to the minute (sets seconds and microseconds to 0).
Formats a Time struct as a time folder string (HH:MM).
Gets slug from metadata, falling back to provided default if nil or empty.
Gets a value from metadata, checking both atom and string keys.
Parses a time folder string (HH:MM) into a Time struct.
Builds a relative path for a timestamp-mode post with language.
@spec relative_path_with_language_versioned( String.t(), Date.t(), Time.t(), integer(), String.t() ) :: String.t()
Builds a relative path for a versioned timestamp-mode post with language.
Resolves allow_version_access from params or existing metadata.
Resolves featured_image_uuid from params or existing metadata.
Resolves previous_url_slugs, tracking old slugs for 301 redirects. When url_slug changes, the old value is added to previous_url_slugs.
Resolves url_slug from params or existing metadata. Empty string clears the custom slug.