thread-master/internal/logic/job/list_jobs_logic.go

48 lines
1.1 KiB
Go
Raw Normal View History

2026-06-26 08:37:04 +00:00
package job
import (
"context"
domrepo "haixun-backend/internal/model/job/domain/repository"
"haixun-backend/internal/svc"
"haixun-backend/internal/types"
)
type ListJobsLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewListJobsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListJobsLogic {
return &ListJobsLogic{ctx: ctx, svcCtx: svcCtx}
}
func (l *ListJobsLogic) ListJobs(req *types.ListJobsReq) (*types.JobListData, error) {
tenantID, uid, err := actorFrom(l.ctx)
if err != nil {
return nil, err
}
runs, total, page, pageSize, totalPages, err := l.svcCtx.Job.ListRuns(l.ctx, domrepo.RunListFilter{
Scope: req.Scope,
ScopeID: req.ScopeID,
TenantID: tenantID,
OwnerUID: uid,
}, req.Page, req.PageSize)
if err != nil {
return nil, err
}
list := make([]types.JobData, 0, len(runs))
for _, run := range runs {
list = append(list, toJobData(run))
}
return &types.JobListData{
Pagination: types.PaginationData{
Total: total,
Page: page,
PageSize: pageSize,
TotalPages: totalPages,
},
List: list,
}, nil
}