From 3140a60e67639b9be5c04dfb709a821eaa0fa674 Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Sun, 30 Oct 2022 22:40:59 +0800 Subject: [PATCH] feat: If with generics --- internal/api/runner/judge.go | 2 +- internal/app/runner/runner.go | 2 +- internal/app/server/server.go | 2 +- internal/global/setup.go | 2 +- internal/router/router.go | 2 +- internal/service/runner/compile.go | 4 ++-- pkg/utils/file.go | 4 ++-- pkg/utils/if.go | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/api/runner/judge.go b/internal/api/runner/judge.go index 1a8e563..62da7cb 100644 --- a/internal/api/runner/judge.go +++ b/internal/api/runner/judge.go @@ -63,7 +63,7 @@ func (h *handler) Judge(_ context.Context, t *asynq.Task) error { // 5. run and judge result, point, status := h.runnerService.RunAndJudge(p.ProblemVersionID, user, p.Submission.Language, &config) - return utils.If(status != e.Success, e.InternalError, e.Success).(e.Status), point, result + return utils.If(status != e.Success, e.InternalError, e.Success), point, result }() h.taskService.SubmitUpdate(&model.SubmitUpdatePayload{ diff --git a/internal/app/runner/runner.go b/internal/app/runner/runner.go index a57aa36..f495343 100644 --- a/internal/app/runner/runner.go +++ b/internal/app/runner/runner.go @@ -28,7 +28,7 @@ func RunRunner(g *global.Global) error { DB: g.Conf.Redis.QueueDb, }, asynq.Config{ - Concurrency: utils.If(runtime.NumCPU() > 1, runtime.NumCPU()-1, 1).(int), + Concurrency: utils.If(runtime.NumCPU() > 1, runtime.NumCPU()-1, 1), Logger: zapasynq.New(g.Log), Queues: map[string]int{model.QueueRunner: 1}, }, diff --git a/internal/app/server/server.go b/internal/app/server/server.go index c46b94a..eefc142 100644 --- a/internal/app/server/server.go +++ b/internal/app/server/server.go @@ -65,7 +65,7 @@ func RunServer(g *global.Global) error { DB: g.Conf.Redis.QueueDb, }, asynq.Config{ - Concurrency: utils.If(runtime.NumCPU() > 1, runtime.NumCPU()-1, 1).(int), + Concurrency: utils.If(runtime.NumCPU() > 1, runtime.NumCPU()-1, 1), Logger: zapasynq.New(g.Log), Queues: map[string]int{model.QueueServer: 1}, }, diff --git a/internal/global/setup.go b/internal/global/setup.go index d04d91c..94ff2af 100644 --- a/internal/global/setup.go +++ b/internal/global/setup.go @@ -11,7 +11,7 @@ import ( func (g *Global) SetupZap() { cfg := zap.Config{ Level: zap.NewAtomicLevelAt( - utils.If(g.Conf.Development, zapcore.DebugLevel, zapcore.InfoLevel).(zapcore.Level), + utils.If(g.Conf.Development, zapcore.DebugLevel, zapcore.InfoLevel), ), Development: g.Conf.Development, Encoding: "console", // or json diff --git a/internal/router/router.go b/internal/router/router.go index a5669f2..8433dc4 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -17,7 +17,7 @@ import ( ) func InitRouters(g *global.Global) *gin.Engine { - gin.SetMode(utils.If(g.Conf.Development, gin.DebugMode, gin.ReleaseMode).(string)) + gin.SetMode(utils.If(g.Conf.Development, gin.DebugMode, gin.ReleaseMode)) r := gin.New() r.MaxMultipartMemory = 8 << 20 diff --git a/internal/service/runner/compile.go b/internal/service/runner/compile.go index 62ad6c0..f8f068a 100644 --- a/internal/service/runner/compile.go +++ b/internal/service/runner/compile.go @@ -16,14 +16,14 @@ func (s *service) Compile(version uint, user string, lang string) (JudgeStatus, log := filepath.Join(UserDir, user, fmt.Sprintf("%s.compile.log", user)) msg, err := utils.FileRead(log) - msg = utils.If(err == nil, msg, nil).([]byte) + msg = utils.If(err == nil, msg, nil) msgText := string(msg) if !utils.FileExist(target) || utils.FileEmpty(target) { return JudgeStatus{ Message: "compile failed", Tasks: []TaskStatus{{Verdict: VerdictCompileError, Message: msgText}}}, - utils.If(status == e.Success, e.RunnerUserCompileFailed, status).(e.Status) + utils.If(status == e.Success, e.RunnerUserCompileFailed, status) } return JudgeStatus{}, e.Success diff --git a/pkg/utils/file.go b/pkg/utils/file.go index 9ae7939..a96076d 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -20,7 +20,7 @@ func FileWrite(filePath string, content []byte) error { func FileExist(filePath string) bool { _, err := os.Stat(filePath) - return If(err == nil || os.IsExist(err), true, false).(bool) + return If(err == nil || os.IsExist(err), true, false) } func FileEmpty(filePath string) bool { @@ -35,5 +35,5 @@ func FileTouch(filePath string) bool { base := filepath.Dir(filePath) _ = os.MkdirAll(base, 0755) _, err := os.OpenFile(filePath, os.O_RDONLY|os.O_CREATE, 0644) - return If(err == nil, true, false).(bool) + return If(err == nil, true, false) } diff --git a/pkg/utils/if.go b/pkg/utils/if.go index 6b70ac7..cfc607f 100644 --- a/pkg/utils/if.go +++ b/pkg/utils/if.go @@ -1,6 +1,6 @@ package utils -func If(condition bool, trueVal, falseVal interface{}) interface{} { +func If[T any](condition bool, trueVal, falseVal T) T { if condition { return trueVal } else {