add article
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
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)
|
||||
|
||||
// 统计方法
|
||||
CountByCategoryID(ctx context.Context, categoryID string) (int64, error)
|
||||
CountByStatus(ctx context.Context, status entities.ArticleStatus) (int64, error)
|
||||
|
||||
// 更新统计信息
|
||||
IncrementViewCount(ctx context.Context, articleID string) error
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"tyapi-server/internal/domains/article/entities"
|
||||
"tyapi-server/internal/shared/interfaces"
|
||||
)
|
||||
|
||||
// CategoryRepository 分类仓储接口
|
||||
type CategoryRepository interface {
|
||||
interfaces.Repository[entities.Category]
|
||||
|
||||
// 自定义查询方法
|
||||
FindActive(ctx context.Context) ([]*entities.Category, error)
|
||||
FindBySortOrder(ctx context.Context) ([]*entities.Category, error)
|
||||
|
||||
// 统计方法
|
||||
CountActive(ctx context.Context) (int64, error)
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package queries
|
||||
|
||||
import "tyapi-server/internal/domains/article/entities"
|
||||
|
||||
// ListArticleQuery 文章列表查询
|
||||
type ListArticleQuery struct {
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
Status entities.ArticleStatus `json:"status"`
|
||||
CategoryID string `json:"category_id"`
|
||||
TagID string `json:"tag_id"`
|
||||
Title string `json:"title"`
|
||||
Summary string `json:"summary"`
|
||||
IsFeatured *bool `json:"is_featured"`
|
||||
OrderBy string `json:"order_by"`
|
||||
OrderDir string `json:"order_dir"`
|
||||
}
|
||||
|
||||
// SearchArticleQuery 文章搜索查询
|
||||
type SearchArticleQuery struct {
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
Keyword string `json:"keyword"`
|
||||
CategoryID string `json:"category_id"`
|
||||
AuthorID string `json:"author_id"`
|
||||
Status entities.ArticleStatus `json:"status"`
|
||||
OrderBy string `json:"order_by"`
|
||||
OrderDir string `json:"order_dir"`
|
||||
}
|
||||
|
||||
// GetArticleQuery 获取文章详情查询
|
||||
type GetArticleQuery struct {
|
||||
ID string `json:"id"`
|
||||
}
|
||||
|
||||
// GetArticlesByAuthorQuery 获取作者文章查询
|
||||
type GetArticlesByAuthorQuery struct {
|
||||
AuthorID string `json:"author_id"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
}
|
||||
|
||||
// GetArticlesByCategoryQuery 获取分类文章查询
|
||||
type GetArticlesByCategoryQuery struct {
|
||||
CategoryID string `json:"category_id"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"tyapi-server/internal/domains/article/entities"
|
||||
"tyapi-server/internal/shared/interfaces"
|
||||
)
|
||||
|
||||
// TagRepository 标签仓储接口
|
||||
type TagRepository interface {
|
||||
interfaces.Repository[entities.Tag]
|
||||
|
||||
// 自定义查询方法
|
||||
FindByArticleID(ctx context.Context, articleID string) ([]*entities.Tag, error)
|
||||
FindByName(ctx context.Context, name string) (*entities.Tag, error)
|
||||
|
||||
// 关联方法
|
||||
AddTagToArticle(ctx context.Context, articleID string, tagID string) error
|
||||
RemoveTagFromArticle(ctx context.Context, articleID string, tagID string) error
|
||||
GetArticleTags(ctx context.Context, articleID string) ([]*entities.Tag, error)
|
||||
}
|
||||
Reference in New Issue
Block a user