30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package repositories
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"tyapi-server/internal/domains/article/entities"
 | |
| 	"tyapi-server/internal/domains/article/repositories/queries"
 | |
| 	"tyapi-server/internal/shared/interfaces"
 | |
| )
 | |
| 
 | |
| // ArticleRepository 文章仓储接口
 | |
| type ArticleRepository interface {
 | |
| 	interfaces.Repository[entities.Article]
 | |
| 	
 | |
| 	// 自定义查询方法
 | |
| 	FindByAuthorID(ctx context.Context, authorID string) ([]*entities.Article, error)
 | |
| 	FindByCategoryID(ctx context.Context, categoryID string) ([]*entities.Article, error)
 | |
| 	FindByStatus(ctx context.Context, status entities.ArticleStatus) ([]*entities.Article, error)
 | |
| 	FindFeatured(ctx context.Context) ([]*entities.Article, error)
 | |
| 	Search(ctx context.Context, query *queries.SearchArticleQuery) ([]*entities.Article, int64, error)
 | |
| 	ListArticles(ctx context.Context, query *queries.ListArticleQuery) ([]*entities.Article, int64, error)
 | |
| 	ListArticlesForAdmin(ctx context.Context, query *queries.ListArticleQuery) ([]*entities.Article, int64, error)
 | |
| 	
 | |
| 	// 统计方法
 | |
| 	CountByCategoryID(ctx context.Context, categoryID string) (int64, error)
 | |
| 	CountByStatus(ctx context.Context, status entities.ArticleStatus) (int64, error)
 | |
| 	
 | |
| 	// 更新统计信息
 | |
| 	IncrementViewCount(ctx context.Context, articleID string) error
 | |
| }
 |