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); }