using System.Collections.Generic;
using System.Threading.Tasks;
using LinkDotNet.Blog.Domain;
namespace LinkDotNet.Blog.Web.Features.Admin.BlogPostEditor.Services;
public interface IBlogPostVersionService
{
///
/// Snapshots the current state into the version history,
/// then applies fields to the existing BlogPost row.
///
ValueTask SaveNewVersionAsync(BlogPost currentBlogPost, BlogPost updatedBlogPost);
///
/// Returns all versions for a blog post, ordered by VersionNumber descending.
///
ValueTask> GetVersionHistoryAsync(string blogPostId);
///
/// Snapshots the current state first (as version N+1), then copies the fields from
/// back to .
/// ScheduledPublishDate is intentionally not restored.
///
ValueTask RestoreVersionAsync(BlogPost currentBlogPost, BlogPostVersion targetVersion);
}