fix slice.range,pipe middleware bug, add slice.simpleOrder func
This commit is contained in:
parent
ac29cf2448
commit
74304b5b12
|
@ -11,6 +11,7 @@ import (
|
||||||
"github.com/fthvgb1/wp-go/app/pkg/logs"
|
"github.com/fthvgb1/wp-go/app/pkg/logs"
|
||||||
"github.com/fthvgb1/wp-go/app/wpconfig"
|
"github.com/fthvgb1/wp-go/app/wpconfig"
|
||||||
"github.com/fthvgb1/wp-go/helper/slice"
|
"github.com/fthvgb1/wp-go/helper/slice"
|
||||||
|
str "github.com/fthvgb1/wp-go/helper/strings"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/go-playground/validator/v10"
|
"github.com/go-playground/validator/v10"
|
||||||
"io"
|
"io"
|
||||||
|
@ -110,6 +111,9 @@ func PostComment(c *gin.Context) {
|
||||||
}
|
}
|
||||||
cc := c.Copy()
|
cc := c.Copy()
|
||||||
go func() {
|
go func() {
|
||||||
|
if gin.Mode() != gin.ReleaseMode {
|
||||||
|
return
|
||||||
|
}
|
||||||
id := comment.CommentPostId
|
id := comment.CommentPostId
|
||||||
if id <= 0 {
|
if id <= 0 {
|
||||||
logs.Error(errors.New("获取文档id错误"), "", comment.CommentPostId)
|
logs.Error(errors.New("获取文档id错误"), "", comment.CommentPostId)
|
||||||
|
@ -131,7 +135,9 @@ func PostComment(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
cache.NewCommentCache().Set(c, up.RawQuery, string(s))
|
cache.NewCommentCache().Set(c, up.RawQuery, string(s))
|
||||||
c.Redirect(http.StatusFound, res.Header.Get("Location"))
|
uu, _ := url.Parse(res.Header.Get("Location"))
|
||||||
|
uuu := str.Join(uu.Path, "?", uu.RawQuery)
|
||||||
|
c.Redirect(http.StatusFound, uuu)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var r io.Reader
|
var r io.Reader
|
||||||
|
|
|
@ -5,8 +5,8 @@ import (
|
||||||
"github.com/fthvgb1/wp-go/safety"
|
"github.com/fthvgb1/wp-go/safety"
|
||||||
)
|
)
|
||||||
|
|
||||||
var fnMap = safety.NewMap[string, map[string]any]() //map[string]map[string]any
|
var fnMap = safety.NewMap[string, map[string]any]()
|
||||||
var fnHook = safety.NewMap[string, map[string]any]() // map[string]map[string]any
|
var fnHook = safety.NewMap[string, map[string]any]()
|
||||||
|
|
||||||
func GetFn[T any](fnType string, name string) []T {
|
func GetFn[T any](fnType string, name string) []T {
|
||||||
v, ok := fnMap.Load(fnType)
|
v, ok := fnMap.Load(fnType)
|
||||||
|
|
|
@ -81,8 +81,8 @@ func BuildPipe(pipeScene string, keyFn func(*Handle, string) string, fn func(*Ha
|
||||||
}
|
}
|
||||||
return call, ok
|
return call, ok
|
||||||
})
|
})
|
||||||
slice.Sort(calls, func(i, j HandleCall) bool {
|
slice.SimpleSort(calls, slice.DESC, func(t HandleCall) float64 {
|
||||||
return i.Order > j.Order
|
return t.Order
|
||||||
})
|
})
|
||||||
return calls, true
|
return calls, true
|
||||||
})
|
})
|
||||||
|
@ -122,9 +122,10 @@ func Run(h *Handle, conf func(*Handle)) {
|
||||||
}
|
}
|
||||||
return pipe, pipe.Fn != nil
|
return pipe, pipe.Fn != nil
|
||||||
})
|
})
|
||||||
slice.Sort(pipes, func(i, j Pipe) bool {
|
slice.SimpleSort(pipes, slice.DESC, func(t Pipe) float64 {
|
||||||
return i.Order > j.Order
|
return t.Order
|
||||||
})
|
})
|
||||||
|
|
||||||
arr := slice.Map(pipes, func(t Pipe) HandlePipeFn[*Handle] {
|
arr := slice.Map(pipes, func(t Pipe) HandlePipeFn[*Handle] {
|
||||||
return t.Fn
|
return t.Fn
|
||||||
})
|
})
|
||||||
|
@ -133,7 +134,7 @@ func Run(h *Handle, conf func(*Handle)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func MiddlewareKey(h *Handle, pipScene string) string {
|
func MiddlewareKey(h *Handle, pipScene string) string {
|
||||||
return h.DoActionFilter("middleware", "middleware", pipScene)
|
return h.DoActionFilter("middleware", str.Join("pipe-middleware-", h.scene), pipScene)
|
||||||
}
|
}
|
||||||
|
|
||||||
func PipeMiddlewareHandle(h *Handle, middlewares map[string][]HandleCall, key string) (handlers []HandleCall) {
|
func PipeMiddlewareHandle(h *Handle, middlewares map[string][]HandleCall, key string) (handlers []HandleCall) {
|
||||||
|
@ -193,7 +194,7 @@ func (h *Handle) PipeHandleHook(name string, calls []HandleCall, m map[string][]
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitPipe(h *Handle) {
|
func InitPipe(h *Handle) {
|
||||||
h.PushPipe(constraints.Home, NewPipe(constraints.PipeMiddleware, 300,
|
h.PushPipe(constraints.AllScene, NewPipe(constraints.PipeMiddleware, 300,
|
||||||
BuildPipe(constraints.PipeMiddleware, MiddlewareKey, PipeMiddlewareHandle)))
|
BuildPipe(constraints.PipeMiddleware, MiddlewareKey, PipeMiddlewareHandle)))
|
||||||
|
|
||||||
h.PushPipe(constraints.AllScene, NewPipe(constraints.PipeData, 200,
|
h.PushPipe(constraints.AllScene, NewPipe(constraints.PipeData, 200,
|
||||||
|
|
4
cache/reload/reload.go
vendored
4
cache/reload/reload.go
vendored
|
@ -264,8 +264,8 @@ func Reload() {
|
||||||
callsM.Flush()
|
callsM.Flush()
|
||||||
flushMapFn.Flush()
|
flushMapFn.Flush()
|
||||||
callll := calls.Load()
|
callll := calls.Load()
|
||||||
slice.Sort(callll, func(i, j queue) bool {
|
slice.SimpleSort(callll, slice.DESC, func(t queue) float64 {
|
||||||
return i.order > j.order
|
return t.order
|
||||||
})
|
})
|
||||||
for _, call := range callll {
|
for _, call := range callll {
|
||||||
call.fn()
|
call.fn()
|
||||||
|
|
|
@ -19,7 +19,10 @@ func Range[T constraints.Integer](start, end T, steps ...T) []T {
|
||||||
if step == 0 {
|
if step == 0 {
|
||||||
l = int(end - start + 1)
|
l = int(end - start + 1)
|
||||||
} else {
|
} else {
|
||||||
l = int((end-start+1)/step + 1)
|
l = int((end - start + 1) / step)
|
||||||
|
if step*T(l) <= end && step != 1 {
|
||||||
|
l++
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if l < 0 {
|
if l < 0 {
|
||||||
l = -l
|
l = -l
|
||||||
|
|
|
@ -56,3 +56,16 @@ func Sorts[T constraints.Ordered](a []T, order int) {
|
||||||
}
|
}
|
||||||
sort.Sort(slice)
|
sort.Sort(slice)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SimpleSort[T any, O constraints.Ordered](a []T, order int, fn func(t T) O) {
|
||||||
|
slice := anyArr[T]{
|
||||||
|
data: a,
|
||||||
|
fn: func(i, j T) bool {
|
||||||
|
if order == DESC {
|
||||||
|
return fn(i) > fn(j)
|
||||||
|
}
|
||||||
|
return fn(i) < fn(j)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
sort.Sort(slice)
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package slice
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/fthvgb1/wp-go/helper/number"
|
||||||
"golang.org/x/exp/constraints"
|
"golang.org/x/exp/constraints"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -163,3 +164,39 @@ func TestStableSort(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSimpleSort(t *testing.T) {
|
||||||
|
|
||||||
|
type args[T any, O constraints.Ordered] struct {
|
||||||
|
a []T
|
||||||
|
order int
|
||||||
|
fn func(t T) O
|
||||||
|
}
|
||||||
|
type testCase[T any, O constraints.Ordered] struct {
|
||||||
|
name string
|
||||||
|
args args[T, O]
|
||||||
|
}
|
||||||
|
tests := []testCase[int, int]{
|
||||||
|
{
|
||||||
|
name: "t1",
|
||||||
|
args: args[int, int]{
|
||||||
|
a: func() []int {
|
||||||
|
f := number.Range(1, 20)
|
||||||
|
Shuffle(&f)
|
||||||
|
fmt.Println(f)
|
||||||
|
return f
|
||||||
|
}(),
|
||||||
|
order: ASC,
|
||||||
|
fn: func(t int) int {
|
||||||
|
return t
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
SimpleSort(tt.args.a, tt.args.order, tt.args.fn)
|
||||||
|
fmt.Println(tt.args.a)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user