Skip to content

Commit 1910a78

Browse files
authored
feat: add task function list endpoint and improve task handling logic (#266)
1 parent 90d6ae2 commit 1910a78

File tree

8 files changed

+197
-154
lines changed

8 files changed

+197
-154
lines changed

apis/task.go

+22
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,28 @@ type Task struct {
4242

4343
func (e *Task) Other(r *gin.RouterGroup) {
4444
r.GET("/task/:operate/:id", e.Operate)
45+
r.GET("/task/func-list", e.FuncList)
46+
}
47+
48+
// FuncList 任务函数列表
49+
// @Summary 任务函数列表
50+
// @Description 任务函数列表
51+
// @Tags task
52+
// @Accept application/json
53+
// @Product application/json
54+
// @Success 200 {object} []dto.TaskFuncItem
55+
// @Router /admin/api/task/func-list [get]
56+
// @Security Bearer
57+
func (e *Task) FuncList(c *gin.Context) {
58+
api := response.Make(c)
59+
resp := make([]*dto.TaskFuncItem, 0)
60+
// 获取所有的任务函数
61+
for k := range models.TaskFuncMap {
62+
resp = append(resp, &dto.TaskFuncItem{
63+
Name: k,
64+
})
65+
}
66+
api.OK(resp)
4567
}
4668

4769
// Operate 操作任务

cmd/server/server.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -232,14 +232,16 @@ type taskE struct {
232232
func (t *taskE) Run() {
233233
tasks := make([]*models.Task, 0)
234234
err := gormdb.DB.
235-
Where("provider = ?", models.TaskProviderDefault).
236235
Where("checked_at < ? or checked_at is null", time.Now().Add(-1*time.Minute)).
237236
Where("status = ?", enum.Enabled).Find(&tasks).Error
238237
if err != nil {
239238
slog.Error("task run get tasks error", slog.Any("err", err))
240239
return
241240
}
242241
for i := range tasks {
242+
if tasks[i] == nil || tasks[i].Provider == models.TaskProviderK8S {
243+
continue
244+
}
243245
slog.Info("task", "id", tasks[i].ID, "checked_at", tasks[i].CheckedAt)
244246
err = task.UpdateJob(tasks[i].ID, tasks[i].Spec, tasks[i])
245247
if err != nil {

dto/task.go

+5
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,8 @@ type TaskOperateRequest struct {
2323
ID string `uri:"id" binding:"required"`
2424
Operate string `uri:"operate" binding:"required"`
2525
}
26+
27+
type TaskFuncItem struct {
28+
Name string `json:"name"`
29+
Description string `json:"description"`
30+
}

go.mod

+37-39
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
module github.com/mss-boot-io/mss-boot-admin
22

3-
go 1.24
3+
go 1.24.0
44

55
require (
66
github.com/appleboy/gin-jwt/v2 v2.10.3
77
github.com/aws/aws-sdk-go-v2 v1.36.3
8-
github.com/aws/aws-sdk-go-v2/config v1.29.13
9-
github.com/aws/aws-sdk-go-v2/service/eks v1.63.1
10-
github.com/aws/aws-sdk-go-v2/service/s3 v1.79.1
11-
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.3
8+
github.com/aws/aws-sdk-go-v2/config v1.29.14
9+
github.com/aws/aws-sdk-go-v2/service/eks v1.64.0
10+
github.com/aws/aws-sdk-go-v2/service/s3 v1.79.2
11+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.4
1212
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be
1313
github.com/gin-contrib/cors v1.7.5
1414
github.com/gin-gonic/gin v1.10.0
15-
github.com/go-git/go-git/v5 v5.14.0
15+
github.com/go-git/go-git/v5 v5.16.0
1616
github.com/google/go-github/v41 v41.0.0
1717
github.com/google/uuid v1.6.0
18-
github.com/gorilla/websocket v1.5.3
19-
github.com/grafana/pyroscope-go v1.2.1
20-
github.com/larksuite/oapi-sdk-go/v3 v3.4.13
21-
github.com/mss-boot-io/mss-boot v0.5.0
18+
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
19+
github.com/grafana/pyroscope-go v1.2.2
20+
github.com/larksuite/oapi-sdk-go/v3 v3.4.15
21+
github.com/mss-boot-io/mss-boot v0.5.1-0.20250427230712-554bc1183420
2222
github.com/nsqio/go-nsq v1.1.0
2323
github.com/redis/go-redis/v9 v9.7.3
2424
github.com/robfig/cron/v3 v3.0.1
@@ -27,14 +27,15 @@ require (
2727
github.com/spf13/cobra v1.9.1
2828
github.com/swaggo/files v1.0.1
2929
github.com/swaggo/gin-swagger v1.6.0
30+
github.com/swaggo/swag v1.16.4
3031
github.com/zealic/xignore v0.3.3
31-
golang.org/x/net v0.38.0
32+
golang.org/x/net v0.39.0
3233
golang.org/x/oauth2 v0.29.0
33-
google.golang.org/grpc v1.71.1
34-
gorm.io/gorm v1.25.12
35-
k8s.io/api v0.32.3
36-
k8s.io/apimachinery v0.32.3
37-
k8s.io/client-go v0.32.3
34+
google.golang.org/grpc v1.72.0
35+
gorm.io/gorm v1.26.0
36+
k8s.io/api v0.33.0
37+
k8s.io/apimachinery v0.33.0
38+
k8s.io/client-go v0.33.0
3839
)
3940

4041
require (
@@ -50,40 +51,40 @@ require (
5051
github.com/Masterminds/semver/v3 v3.3.1 // indirect
5152
github.com/Masterminds/sprig/v3 v3.3.0 // indirect
5253
github.com/Microsoft/go-winio v0.6.2 // indirect
53-
github.com/ProtonMail/go-crypto v1.1.6 // indirect
54+
github.com/ProtonMail/go-crypto v1.2.0 // indirect
5455
github.com/andygrunwald/go-jira v1.16.0 // indirect
5556
github.com/armon/go-metrics v0.4.1 // indirect
5657
github.com/aws/aws-msk-iam-sasl-signer-go v1.0.1 // indirect
5758
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.10 // indirect
58-
github.com/aws/aws-sdk-go-v2/credentials v1.17.66 // indirect
59+
github.com/aws/aws-sdk-go-v2/credentials v1.17.67 // indirect
5960
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 // indirect
6061
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.34 // indirect
6162
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.34 // indirect
6263
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
6364
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.34 // indirect
64-
github.com/aws/aws-sdk-go-v2/service/appconfigdata v1.19.2 // indirect
65+
github.com/aws/aws-sdk-go-v2/service/appconfigdata v1.19.3 // indirect
6566
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.3 // indirect
6667
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.0 // indirect
6768
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.15 // indirect
6869
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.15 // indirect
6970
github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 // indirect
7071
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 // indirect
71-
github.com/aws/aws-sdk-go-v2/service/sts v1.33.18 // indirect
72+
github.com/aws/aws-sdk-go-v2/service/sts v1.33.19 // indirect
7273
github.com/aws/smithy-go v1.22.3 // indirect
7374
github.com/beorn7/perks v1.0.1 // indirect
7475
github.com/bmatcuk/doublestar/v4 v4.8.1 // indirect
7576
github.com/bsm/redislock v0.9.4 // indirect
7677
github.com/bytedance/sonic v1.13.2 // indirect
7778
github.com/bytedance/sonic/loader v0.2.4 // indirect
78-
github.com/casbin/casbin/v2 v2.104.0 // indirect
79+
github.com/casbin/casbin/v2 v2.105.0 // indirect
7980
github.com/casbin/gorm-adapter/v3 v3.32.0 // indirect
8081
github.com/casbin/govaluate v1.3.0 // indirect
8182
github.com/cespare/xxhash/v2 v2.3.0 // indirect
82-
github.com/cloudflare/circl v1.6.0 // indirect
83+
github.com/cloudflare/circl v1.6.1 // indirect
8384
github.com/cloudwego/base64x v0.1.5 // indirect
8485
github.com/coreos/go-oidc/v3 v3.14.1 // indirect
8586
github.com/coreos/go-semver v0.3.1 // indirect
86-
github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
87+
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
8788
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
8889
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
8990
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
@@ -97,15 +98,15 @@ require (
9798
github.com/fatih/structs v1.1.0 // indirect
9899
github.com/fsnotify/fsnotify v1.9.0 // indirect
99100
github.com/fxamacker/cbor/v2 v2.8.0 // indirect
100-
github.com/gabriel-vasile/mimetype v1.4.8 // indirect
101+
github.com/gabriel-vasile/mimetype v1.4.9 // indirect
101102
github.com/gin-contrib/pprof v1.5.3 // indirect
102-
github.com/gin-contrib/sse v1.0.0 // indirect
103+
github.com/gin-contrib/sse v1.1.0 // indirect
103104
github.com/git-chglog/git-chglog v0.15.4 // indirect
104105
github.com/glebarez/go-sqlite v1.22.0 // indirect
105106
github.com/glebarez/sqlite v1.11.0 // indirect
106107
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
107108
github.com/go-git/go-billy/v5 v5.6.2 // indirect
108-
github.com/go-jose/go-jose/v4 v4.0.5 // indirect
109+
github.com/go-jose/go-jose/v4 v4.1.0 // indirect
109110
github.com/go-logr/logr v1.4.2 // indirect
110111
github.com/go-logr/stdr v1.2.2 // indirect
111112
github.com/go-ole/go-ole v1.3.0 // indirect
@@ -123,12 +124,10 @@ require (
123124
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
124125
github.com/golang-sql/sqlexp v0.1.0 // indirect
125126
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
126-
github.com/golang/protobuf v1.5.4 // indirect
127127
github.com/golang/snappy v1.0.0 // indirect
128128
github.com/google/gnostic-models v0.6.9 // indirect
129129
github.com/google/go-cmp v0.7.0 // indirect
130130
github.com/google/go-querystring v1.1.0 // indirect
131-
github.com/google/gofuzz v1.2.0 // indirect
132131
github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // indirect
133132
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect
134133
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.1 // indirect
@@ -191,10 +190,10 @@ require (
191190
github.com/pkg/errors v0.9.1 // indirect
192191
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
193192
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
194-
github.com/prometheus/client_golang v1.21.1 // indirect
195-
github.com/prometheus/client_model v0.6.1 // indirect
193+
github.com/prometheus/client_golang v1.22.0 // indirect
194+
github.com/prometheus/client_model v0.6.2 // indirect
196195
github.com/prometheus/common v0.63.0 // indirect
197-
github.com/prometheus/procfs v0.16.0 // indirect
196+
github.com/prometheus/procfs v0.16.1 // indirect
198197
github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 // indirect
199198
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
200199
github.com/russross/blackfriday/v2 v2.1.0 // indirect
@@ -205,7 +204,6 @@ require (
205204
github.com/spf13/afero v1.14.0 // indirect
206205
github.com/spf13/pflag v1.0.6 // indirect
207206
github.com/stretchr/testify v1.10.0 // indirect
208-
github.com/swaggo/swag v1.16.4 // indirect
209207
github.com/thoas/go-funk v0.9.3 // indirect
210208
github.com/tklauser/go-sysconf v0.3.15 // indirect
211209
github.com/tklauser/numcpus v0.10.0 // indirect
@@ -230,15 +228,15 @@ require (
230228
go.opentelemetry.io/otel/trace v1.35.0 // indirect
231229
golang.org/x/arch v0.16.0 // indirect
232230
golang.org/x/crypto v0.37.0 // indirect
233-
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect
231+
golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect
234232
golang.org/x/mod v0.24.0 // indirect
235233
golang.org/x/sync v0.13.0 // indirect
236234
golang.org/x/sys v0.32.0 // indirect
237235
golang.org/x/term v0.31.0 // indirect
238236
golang.org/x/text v0.24.0 // indirect
239237
golang.org/x/time v0.11.0 // indirect
240-
golang.org/x/tools v0.31.0 // indirect
241-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250407143221-ac9807e6c755 // indirect
238+
golang.org/x/tools v0.32.0 // indirect
239+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250425173222-7b384671a197 // indirect
242240
google.golang.org/protobuf v1.36.6 // indirect
243241
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
244242
gopkg.in/inf.v0 v0.9.1 // indirect
@@ -248,16 +246,16 @@ require (
248246
gorm.io/driver/mysql v1.5.7 // indirect
249247
gorm.io/driver/postgres v1.5.11 // indirect
250248
gorm.io/driver/sqlserver v1.5.4 // indirect
251-
gorm.io/plugin/dbresolver v1.5.3 // indirect
249+
gorm.io/plugin/dbresolver v1.6.0 // indirect
252250
k8s.io/klog/v2 v2.130.1 // indirect
253251
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
254252
k8s.io/utils v0.0.0-20250321185631-1f6e0b77f77e // indirect
255-
modernc.org/libc v1.62.1 // indirect
253+
modernc.org/libc v1.64.0 // indirect
256254
modernc.org/mathutil v1.7.1 // indirect
257-
modernc.org/memory v1.9.1 // indirect
255+
modernc.org/memory v1.10.0 // indirect
258256
modernc.org/sqlite v1.37.0 // indirect
259257
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
260258
sigs.k8s.io/randfill v1.0.0 // indirect
261-
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
259+
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 // indirect
262260
sigs.k8s.io/yaml v1.4.0 // indirect
263261
)

0 commit comments

Comments
 (0)