f
This commit is contained in:
24
internal/domains/article/repositories/announcement.go
Normal file
24
internal/domains/article/repositories/announcement.go
Normal file
@@ -0,0 +1,24 @@
|
||||
// 存储公告的仓储接口
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"hyapi-server/internal/domains/article/entities"
|
||||
"hyapi-server/internal/domains/article/repositories/queries"
|
||||
"hyapi-server/internal/shared/interfaces"
|
||||
)
|
||||
|
||||
// AnnouncementRepository 公告仓储接口
|
||||
type AnnouncementRepository interface {
|
||||
interfaces.Repository[entities.Announcement]
|
||||
|
||||
// 自定义查询方法
|
||||
FindByStatus(ctx context.Context, status entities.AnnouncementStatus) ([]*entities.Announcement, error)
|
||||
FindScheduled(ctx context.Context) ([]*entities.Announcement, error)
|
||||
ListAnnouncements(ctx context.Context, query *queries.ListAnnouncementQuery) ([]*entities.Announcement, int64, error)
|
||||
|
||||
// 统计方法
|
||||
CountByStatus(ctx context.Context, status entities.AnnouncementStatus) (int64, error)
|
||||
// 更新统计信息
|
||||
UpdateStatistics(ctx context.Context, announcementID string) error
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"hyapi-server/internal/domains/article/entities"
|
||||
"hyapi-server/internal/domains/article/repositories/queries"
|
||||
"hyapi-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
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"hyapi-server/internal/domains/article/entities"
|
||||
"hyapi-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,13 @@
|
||||
package queries
|
||||
|
||||
import "hyapi-server/internal/domains/article/entities"
|
||||
|
||||
// ListAnnouncementQuery 公告列表查询
|
||||
type ListAnnouncementQuery struct {
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
Status entities.AnnouncementStatus `json:"status"`
|
||||
Title string `json:"title"`
|
||||
OrderBy string `json:"order_by"`
|
||||
OrderDir string `json:"order_dir"`
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package queries
|
||||
|
||||
import "hyapi-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,33 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"hyapi-server/internal/domains/article/entities"
|
||||
)
|
||||
|
||||
// ScheduledTaskRepository 定时任务仓储接口
|
||||
type ScheduledTaskRepository interface {
|
||||
// Create 创建定时任务记录
|
||||
Create(ctx context.Context, task entities.ScheduledTask) (entities.ScheduledTask, error)
|
||||
|
||||
// GetByTaskID 根据Asynq任务ID获取任务记录
|
||||
GetByTaskID(ctx context.Context, taskID string) (entities.ScheduledTask, error)
|
||||
|
||||
// GetByArticleID 根据文章ID获取任务记录
|
||||
GetByArticleID(ctx context.Context, articleID string) (entities.ScheduledTask, error)
|
||||
|
||||
// Update 更新任务记录
|
||||
Update(ctx context.Context, task entities.ScheduledTask) error
|
||||
|
||||
// Delete 删除任务记录
|
||||
Delete(ctx context.Context, taskID string) error
|
||||
|
||||
// MarkAsCancelled 标记任务为已取消
|
||||
MarkAsCancelled(ctx context.Context, taskID string) error
|
||||
|
||||
// GetActiveTasks 获取活动状态的任务列表
|
||||
GetActiveTasks(ctx context.Context) ([]entities.ScheduledTask, error)
|
||||
|
||||
// GetExpiredTasks 获取过期的任务列表
|
||||
GetExpiredTasks(ctx context.Context) ([]entities.ScheduledTask, error)
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package repositories
|
||||
|
||||
import (
|
||||
"context"
|
||||
"hyapi-server/internal/domains/article/entities"
|
||||
"hyapi-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