From 6ed25e948caf3513572d0bde214661983c4dcf4f Mon Sep 17 00:00:00 2001 From: tx7do Date: Fri, 27 Oct 2023 08:15:00 +0800 Subject: [PATCH] feat: entgo. --- README.md | 2 +- entgo/query/order.go | 14 +++++++++++--- entgo/query/pagination.go | 22 +++++++++------------- entgo/query/query.go | 5 ----- pagination/pagination.go | 14 ++++++++++++++ tag.bat | 2 +- 6 files changed, 36 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index a065f21..6389115 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# kratos-utils +# go-utils diff --git a/entgo/query/order.go b/entgo/query/order.go index c5c30e6..baf298a 100644 --- a/entgo/query/order.go +++ b/entgo/query/order.go @@ -21,14 +21,14 @@ func QueryCommandToOrderConditions(orderBys []string) (error, func(s *sql.Select continue } - s.OrderBy(sql.Desc(s.C(key))) + BuildOrderSelect(s, key, true) } else { // 升序 if len(v) == 0 { continue } - s.OrderBy(sql.Asc(s.C(v))) + BuildOrderSelect(s, v, false) } } } @@ -37,9 +37,17 @@ func QueryCommandToOrderConditions(orderBys []string) (error, func(s *sql.Select func BuildOrderSelector(orderBys []string, defaultOrderField string) (error, func(s *sql.Selector)) { if len(orderBys) == 0 { return nil, func(s *sql.Selector) { - s.OrderBy(sql.Desc(s.C(defaultOrderField))) + BuildOrderSelect(s, defaultOrderField, true) } } else { return QueryCommandToOrderConditions(orderBys) } } + +func BuildOrderSelect(s *sql.Selector, field string, desc bool) { + if desc { + s.OrderBy(sql.Desc(s.C(field))) + } else { + s.OrderBy(sql.Asc(s.C(field))) + } +} diff --git a/entgo/query/pagination.go b/entgo/query/pagination.go index ca4ab78..dece764 100644 --- a/entgo/query/pagination.go +++ b/entgo/query/pagination.go @@ -9,18 +9,14 @@ import ( func BuildPaginationSelector(page, pageSize int32, noPaging bool) func(*sql.Selector) { if noPaging { return nil - } - - if page == 0 { - page = DefaultPage - } - - if pageSize == 0 { - pageSize = DefaultPageSize - } - - return func(s *sql.Selector) { - s.Offset(paging.GetPageOffset(page, pageSize)). - Limit(int(pageSize)) + } else { + return func(s *sql.Selector) { + BuildPaginationSelect(s, page, pageSize) + } } } + +func BuildPaginationSelect(s *sql.Selector, page, pageSize int32) { + offset := paging.GetPageOffset(page, pageSize) + s.Offset(offset).Limit(int(pageSize)) +} diff --git a/entgo/query/query.go b/entgo/query/query.go index 4ce263f..9b250b2 100644 --- a/entgo/query/query.go +++ b/entgo/query/query.go @@ -5,11 +5,6 @@ import ( _ "github.com/go-kratos/kratos/v2/encoding/json" ) -const ( - DefaultPage = 1 - DefaultPageSize = 10 -) - // BuildQuerySelector 构建分页查询选择器 func BuildQuerySelector( dbDriverName string, diff --git a/pagination/pagination.go b/pagination/pagination.go index 2740730..2fd10c7 100644 --- a/pagination/pagination.go +++ b/pagination/pagination.go @@ -1,5 +1,19 @@ package pagination +const ( + DefaultPage = 1 // 默认页数 + DefaultPageSize = 10 // 默认每页行数 +) + +// GetPageOffset 计算偏移量 func GetPageOffset(pageNum, pageSize int32) int { + if pageNum < 1 { + pageNum = DefaultPage + } + + if pageSize < 1 { + pageSize = DefaultPageSize + } + return int((pageNum - 1) * pageSize) } diff --git a/tag.bat b/tag.bat index 43dadaf..3f7e20d 100644 --- a/tag.bat +++ b/tag.bat @@ -1,6 +1,6 @@ git tag v1.1.0 git tag bank_card/v1.1.0 -git tag entgo/v1.1.1 +git tag entgo/v1.1.2 git tag geoip/v1.1.0 git push origin --tags