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