feat: If with generics
This commit is contained in:
parent
97c05a836c
commit
3140a60e67
@ -63,7 +63,7 @@ func (h *handler) Judge(_ context.Context, t *asynq.Task) error {
|
|||||||
|
|
||||||
// 5. run and judge
|
// 5. run and judge
|
||||||
result, point, status := h.runnerService.RunAndJudge(p.ProblemVersionID, user, p.Submission.Language, &config)
|
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{
|
h.taskService.SubmitUpdate(&model.SubmitUpdatePayload{
|
||||||
|
@ -28,7 +28,7 @@ func RunRunner(g *global.Global) error {
|
|||||||
DB: g.Conf.Redis.QueueDb,
|
DB: g.Conf.Redis.QueueDb,
|
||||||
},
|
},
|
||||||
asynq.Config{
|
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),
|
Logger: zapasynq.New(g.Log),
|
||||||
Queues: map[string]int{model.QueueRunner: 1},
|
Queues: map[string]int{model.QueueRunner: 1},
|
||||||
},
|
},
|
||||||
|
@ -65,7 +65,7 @@ func RunServer(g *global.Global) error {
|
|||||||
DB: g.Conf.Redis.QueueDb,
|
DB: g.Conf.Redis.QueueDb,
|
||||||
},
|
},
|
||||||
asynq.Config{
|
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),
|
Logger: zapasynq.New(g.Log),
|
||||||
Queues: map[string]int{model.QueueServer: 1},
|
Queues: map[string]int{model.QueueServer: 1},
|
||||||
},
|
},
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
func (g *Global) SetupZap() {
|
func (g *Global) SetupZap() {
|
||||||
cfg := zap.Config{
|
cfg := zap.Config{
|
||||||
Level: zap.NewAtomicLevelAt(
|
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,
|
Development: g.Conf.Development,
|
||||||
Encoding: "console", // or json
|
Encoding: "console", // or json
|
||||||
|
@ -17,7 +17,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func InitRouters(g *global.Global) *gin.Engine {
|
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 := gin.New()
|
||||||
r.MaxMultipartMemory = 8 << 20
|
r.MaxMultipartMemory = 8 << 20
|
||||||
|
@ -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))
|
log := filepath.Join(UserDir, user, fmt.Sprintf("%s.compile.log", user))
|
||||||
msg, err := utils.FileRead(log)
|
msg, err := utils.FileRead(log)
|
||||||
msg = utils.If(err == nil, msg, nil).([]byte)
|
msg = utils.If(err == nil, msg, nil)
|
||||||
msgText := string(msg)
|
msgText := string(msg)
|
||||||
|
|
||||||
if !utils.FileExist(target) || utils.FileEmpty(target) {
|
if !utils.FileExist(target) || utils.FileEmpty(target) {
|
||||||
return JudgeStatus{
|
return JudgeStatus{
|
||||||
Message: "compile failed",
|
Message: "compile failed",
|
||||||
Tasks: []TaskStatus{{Verdict: VerdictCompileError, Message: msgText}}},
|
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
|
return JudgeStatus{}, e.Success
|
||||||
|
@ -20,7 +20,7 @@ func FileWrite(filePath string, content []byte) error {
|
|||||||
|
|
||||||
func FileExist(filePath string) bool {
|
func FileExist(filePath string) bool {
|
||||||
_, err := os.Stat(filePath)
|
_, 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 {
|
func FileEmpty(filePath string) bool {
|
||||||
@ -35,5 +35,5 @@ func FileTouch(filePath string) bool {
|
|||||||
base := filepath.Dir(filePath)
|
base := filepath.Dir(filePath)
|
||||||
_ = os.MkdirAll(base, 0755)
|
_ = os.MkdirAll(base, 0755)
|
||||||
_, err := os.OpenFile(filePath, os.O_RDONLY|os.O_CREATE, 0644)
|
_, err := os.OpenFile(filePath, os.O_RDONLY|os.O_CREATE, 0644)
|
||||||
return If(err == nil, true, false).(bool)
|
return If(err == nil, true, false)
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package utils
|
package utils
|
||||||
|
|
||||||
func If(condition bool, trueVal, falseVal interface{}) interface{} {
|
func If[T any](condition bool, trueVal, falseVal T) T {
|
||||||
if condition {
|
if condition {
|
||||||
return trueVal
|
return trueVal
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user