46951d871a
- TaxSeason / CurrentSeasonDto에 RelatedCategorySlug 추가 - TaxSeasonCalendar 각 시즌에 카테고리 슬러그 매핑 (income-tax→income-tax, vat-1st/2nd→vat, 종부세→real-estate-tax 등) - IBlogPostRepository.GetByCategorySlugAsync 추가 - BlogService.GetSeasonalPostsAsync: 시즌 관련 글 2개 우선 + 나머지 최신 글로 채움 - IndexModel: SeasonalPosts / RecentPosts 분리 로드 - Index.cshtml 블로그 섹션: 시즌 중 "이번 시즌 추천" 배지 + 시즌별 전체보기 버튼 - site.css: blog-card--seasonal, seasonal-blog-tag, btn-seasonal 스타일 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 lines
1.2 KiB
C#
20 lines
1.2 KiB
C#
namespace TaxBaik.Domain.Interfaces;
|
|
|
|
using TaxBaik.Domain.Entities;
|
|
|
|
public interface IBlogPostRepository
|
|
{
|
|
Task<BlogPost?> GetByIdAsync(int id, CancellationToken cancellationToken = default);
|
|
Task<BlogPost?> GetBySlugAsync(string slug, CancellationToken cancellationToken = default);
|
|
Task<(IEnumerable<BlogPost> Items, int Total)> GetPublishedPagedAsync(
|
|
int page, int pageSize, int? categoryId = null, CancellationToken cancellationToken = default);
|
|
Task<IEnumerable<BlogPost>> GetByCategorySlugAsync(string categorySlug, int limit, CancellationToken cancellationToken = default);
|
|
Task<IEnumerable<BlogPost>> GetAllForAdminAsync(CancellationToken cancellationToken = default);
|
|
Task<(IEnumerable<BlogPost> Items, int Total)> GetAdminPagedAsync(
|
|
int page, int pageSize, CancellationToken cancellationToken = default);
|
|
Task<int> CreateAsync(BlogPost post, CancellationToken cancellationToken = default);
|
|
Task UpdateAsync(BlogPost post, CancellationToken cancellationToken = default);
|
|
Task DeleteAsync(int id, CancellationToken cancellationToken = default);
|
|
Task IncrementViewCountAsync(int id, CancellationToken cancellationToken = default);
|
|
}
|