From a78276bce8d31bc04b3132611fbc1c76c25a250c Mon Sep 17 00:00:00 2001 From: heliosgo Date: Thu, 11 Jul 2024 17:47:51 +0800 Subject: [PATCH] Update FindAndCount --- find.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/find.go b/find.go index 945aa0dc..78fe4442 100644 --- a/find.go +++ b/find.go @@ -49,6 +49,17 @@ func (session *Session) FindAndCount(rowsSlicePtr any, condiBean ...any) (int64, return 0, errors.New("needs a pointer to a slice or a map") } + sliceValueLen := sliceValue.Len() + if session.statement.LimitN == nil { + return int64(sliceValueLen), nil + } + if *session.statement.LimitN > 0 && sliceValueLen == 0 && session.statement.Start <= 0 { + return 0, nil + } + if session.statement.Start >= 0 && sliceValueLen > 0 && sliceValueLen < *session.statement.LimitN { + return int64(session.statement.Start + sliceValueLen), nil + } + sliceElementType := sliceValue.Type().Elem() if sliceElementType.Kind() == reflect.Ptr { sliceElementType = sliceElementType.Elem()