Compare commits

...

10 Commits

Author SHA1 Message Date
tx7do
b4188ca4d8 feat: io utils 2023-10-27 17:01:35 +08:00
tx7do
e9ea8fa536 feat: io utils 2023-10-27 16:58:06 +08:00
tx7do
6ed25e948c feat: entgo. 2023-10-27 08:15:00 +08:00
tx7do
bfea578907 feat: upgraded. 2023-10-26 19:57:40 +08:00
tx7do
b8a6f7f7d8 feat: change project name. 2023-10-26 19:52:59 +08:00
tx7do
149ded5d4e feat: change project name. 2023-10-26 19:51:23 +08:00
tx7do
60c0477999 feat: tag 2023-10-25 16:59:40 +08:00
tx7do
ef3aa38cb2 feat: update. 2023-10-25 16:58:26 +08:00
tx7do
498bc3ea18 feat: update. 2023-10-25 16:55:53 +08:00
tx7do
1c225465de feat: scripts. 2023-10-25 15:50:55 +08:00
24 changed files with 292 additions and 53 deletions

View File

@@ -1 +1 @@
# kratos-utils
# go-utils

View File

@@ -10,7 +10,7 @@ import (
"github.com/mattn/go-sqlite3"
_ "github.com/mattn/go-sqlite3"
"github.com/tx7do/kratos-utils/bank_card/assets"
"github.com/tx7do/go-utils/bank_card/assets"
)
type Database struct {

View File

@@ -1,4 +1,4 @@
module github.com/tx7do/kratos-utils/bank_card
module github.com/tx7do/go-utils/bank_card
go 1.20
@@ -12,3 +12,5 @@ require (
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
replace github.com/tx7do/go-utils => ../

View File

@@ -1,4 +1,4 @@
module github.com/tx7do/kratos-utils/entgo
module github.com/tx7do/go-utils/entgo
go 1.20
@@ -8,7 +8,7 @@ require (
github.com/go-kratos/kratos/v2 v2.7.1
github.com/google/uuid v1.3.1
github.com/stretchr/testify v1.8.4
github.com/tx7do/kratos-utils v0.0.0-20231025044346-36a096df76d8
github.com/tx7do/go-utils v1.1.0
)
require (
@@ -34,3 +34,5 @@ require (
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
replace github.com/tx7do/go-utils => ../

View File

@@ -7,6 +7,8 @@ entgo.io/ent v0.12.4/go.mod h1:Y3JVAjtlIk8xVZYSn3t3mf8xlZIn5SAOXZQxD6kKI+Q=
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
@@ -18,6 +20,7 @@ github.com/go-kratos/kratos/v2 v2.7.1/go.mod h1:CPn82O93OLHjtnbuyOKhAG5TkSvw+mFn
github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4=
github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4=
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
@@ -33,6 +36,7 @@ github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4E
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
@@ -42,12 +46,13 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/tx7do/kratos-utils v0.0.0-20231025044346-36a096df76d8 h1:G+s0DQ6zI0dGcvd9tRpXcYzelO0xRnp2jpFtQ+697Ko=
github.com/tx7do/kratos-utils v0.0.0-20231025044346-36a096df76d8/go.mod h1:rTeeqeABjK9HamIwKZ+uLozVIk/hGiEbNsi6rVr4l0w=
github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=

View File

@@ -69,11 +69,11 @@ func (TimeAt) Fields() []ent.Field {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _ ent.Mixin = (*CreatedTime)(nil)
var _ ent.Mixin = (*CreateTime)(nil)
type CreatedTime struct{ mixin.Schema }
type CreateTime struct{ mixin.Schema }
func (CreatedTime) Fields() []ent.Field {
func (CreateTime) Fields() []ent.Field {
return []ent.Field{
// 创建时间
field.Time("create_time").
@@ -86,11 +86,11 @@ func (CreatedTime) Fields() []ent.Field {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _ ent.Mixin = (*UpdatedTime)(nil)
var _ ent.Mixin = (*UpdateTime)(nil)
type UpdatedTime struct{ mixin.Schema }
type UpdateTime struct{ mixin.Schema }
func (UpdatedTime) Fields() []ent.Field {
func (UpdateTime) Fields() []ent.Field {
return []ent.Field{
// 更新时间
field.Time("update_time").
@@ -102,11 +102,11 @@ func (UpdatedTime) Fields() []ent.Field {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _ ent.Mixin = (*DeletedTime)(nil)
var _ ent.Mixin = (*DeleteTime)(nil)
type DeletedTime struct{ mixin.Schema }
type DeleteTime struct{ mixin.Schema }
func (DeletedTime) Fields() []ent.Field {
func (DeleteTime) Fields() []ent.Field {
return []ent.Field{
// 删除时间
field.Time("delete_time").
@@ -122,9 +122,9 @@ type Time struct{ mixin.Schema }
func (Time) Fields() []ent.Field {
var fields []ent.Field
fields = append(fields, CreatedTime{}.Fields()...)
fields = append(fields, UpdatedTime{}.Fields()...)
fields = append(fields, DeletedTime{}.Fields()...)
fields = append(fields, CreateTime{}.Fields()...)
fields = append(fields, UpdateTime{}.Fields()...)
fields = append(fields, DeleteTime{}.Fields()...)
return fields
}

View File

@@ -1,10 +1,11 @@
package mixin
import (
"time"
"entgo.io/ent"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/mixin"
"time"
)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -74,3 +75,71 @@ func (Timestamp) Fields() []ent.Field {
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _ ent.Mixin = (*CreatedAtTimestamp)(nil)
type CreatedAtTimestamp struct{ mixin.Schema }
func (CreatedAtTimestamp) Fields() []ent.Field {
return []ent.Field{
// 创建时间,毫秒
field.Int64("created_at").
Comment("创建时间").
Immutable().
Optional().
Nillable().
DefaultFunc(time.Now().UnixMilli),
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _ ent.Mixin = (*UpdatedAtTimestamp)(nil)
type UpdatedAtTimestamp struct{ mixin.Schema }
func (UpdatedAtTimestamp) Fields() []ent.Field {
return []ent.Field{
// 更新时间,毫秒
// 需要注意的是,如果不是程序自动更新,那么这个字段不会被更新,除非在数据库里面下触发器更新。
field.Int64("updated_at").
Comment("更新时间").
Optional().
Nillable().
UpdateDefault(time.Now().UnixMilli),
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _ ent.Mixin = (*DeletedAtTimestamp)(nil)
type DeletedAtTimestamp struct{ mixin.Schema }
func (DeletedAtTimestamp) Fields() []ent.Field {
return []ent.Field{
// 删除时间,毫秒
field.Int64("deleted_at").
Comment("删除时间").
Optional().
Nillable(),
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var _ ent.Mixin = (*TimestampAt)(nil)
type TimestampAt struct{ mixin.Schema }
func (TimestampAt) Fields() []ent.Field {
var fields []ent.Field
fields = append(fields, CreatedAtTimestamp{}.Fields()...)
fields = append(fields, UpdatedAtTimestamp{}.Fields()...)
fields = append(fields, DeletedAtTimestamp{}.Fields()...)
return fields
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@@ -7,7 +7,7 @@ import (
"entgo.io/ent/dialect/sql"
"github.com/go-kratos/kratos/v2/encoding"
"github.com/tx7do/kratos-utils/stringcase"
"github.com/tx7do/go-utils/stringcase"
)
const (

View File

@@ -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)))
}
}

View File

@@ -3,24 +3,20 @@ package entgo
import (
"entgo.io/ent/dialect/sql"
paging "github.com/tx7do/kratos-utils/pagination"
paging "github.com/tx7do/go-utils/pagination"
)
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))
}

View File

@@ -5,11 +5,6 @@ import (
_ "github.com/go-kratos/kratos/v2/encoding/json"
)
const (
DefaultPage = 1
DefaultPageSize = 10
)
// BuildQuerySelector 构建分页查询选择器
func BuildQuerySelector(
dbDriverName string,

View File

@@ -7,8 +7,8 @@ import (
"github.com/go-kratos/kratos/v2/log"
"github.com/oschwald/geoip2-golang"
"github.com/tx7do/kratos-utils/geoip"
"github.com/tx7do/kratos-utils/geoip/geolite/assets"
"github.com/tx7do/go-utils/geoip"
"github.com/tx7do/go-utils/geoip/geolite/assets"
)
const defaultOutputLanguage = "zh-CN"

View File

@@ -1,4 +1,4 @@
module github.com/tx7do/kratos-utils/geoip
module github.com/tx7do/go-utils/geoip
go 1.20
@@ -17,3 +17,5 @@ require (
golang.org/x/sys v0.10.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
replace github.com/tx7do/go-utils => ../

View File

@@ -3,12 +3,12 @@ package qqwry
import (
"encoding/binary"
"errors"
"github.com/tx7do/kratos-utils/geoip"
"github.com/tx7do/go-utils/geoip"
"net"
"strings"
"sync"
"github.com/tx7do/kratos-utils/geoip/qqwry/assets"
"github.com/tx7do/go-utils/geoip/qqwry/assets"
)
type Client struct {

36
gitautotag.sh Normal file
View File

@@ -0,0 +1,36 @@
#!/bin/bash
CURTAG=`git describe --abbrev=0 --tags`;
CURTAG="${CURTAG/v/}"
IFS='.' read -a vers <<< "$CURTAG"
MAJ=${vers[0]}
MIN=${vers[1]}
BUG=${vers[2]}
echo "Current Tag: v$MAJ.$MIN.$BUG"
for cmd in "$@"
do
case $cmd in
"--major")
# $((MAJ+1))
((MAJ+=1))
MIN=0
BUG=0
echo "Incrementing Major Version#"
;;
"--minor")
((MIN+=1))
BUG=0
echo "Incrementing Minor Version#"
;;
"--bug")
((BUG+=1))
echo "Incrementing Bug Version#"
;;
esac
done
NEWTAG="v$MAJ.$MIN.$BUG"
echo "Adding Tag: $NEWTAG";
git tag -a $NEWTAG -m $NEWTAG

2
go.mod
View File

@@ -1,4 +1,4 @@
module github.com/tx7do/kratos-utils
module github.com/tx7do/go-utils
go 1.20

85
ioutil/path.go Normal file
View File

@@ -0,0 +1,85 @@
package ioutil
import (
"os"
"path/filepath"
)
// GetWorkingDirPath 获取工作路径
func GetWorkingDirPath() string {
dir, err := os.Getwd()
if err != nil {
panic(err)
}
return dir
}
// GetExePath 获取可执行程序路径
func GetExePath() string {
ex, err := os.Executable()
if err != nil {
panic(err)
}
exePath := filepath.Dir(ex)
return exePath
}
// GetAbsPath 获取绝对路径
func GetAbsPath() string {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
panic(err)
}
return dir
}
// PathExist 路径是否存在
func PathExist(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
if os.IsNotExist(err) {
return false
}
return false
}
// GetFileList 获取文件夹下面的所有文件的列表
func GetFileList(root string) []string {
var files []string
if err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
return nil
}
files = append(files, path)
return nil
}); err != nil {
return nil
}
return files
}
// GetFolderNameList 获取当前文件夹下面的所有文件夹名的列表
func GetFolderNameList(root string) []string {
var names []string
fs, _ := os.ReadDir(root)
for _, file := range fs {
if file.IsDir() {
names = append(names, file.Name())
}
}
return names
}
// ReadFile 读取文件
func ReadFile(path string) []byte {
content, err := os.ReadFile(path)
if err != nil {
return nil
}
return content
}

View File

@@ -6,7 +6,7 @@ import (
"sync/atomic"
"time"
"github.com/tx7do/kratos-utils/trans"
"github.com/tx7do/go-utils/trans"
)
type idCounter uint32

View File

@@ -8,7 +8,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/tx7do/kratos-utils/trans"
"github.com/tx7do/go-utils/trans"
)
func TestGenerateOrderIdWithRandom(t *testing.T) {

View File

@@ -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)
}

6
tag.bat Normal file
View File

@@ -0,0 +1,6 @@
git tag v1.1.2
git tag bank_card/v1.1.0
git tag entgo/v1.1.2
git tag geoip/v1.1.0
git push origin --tags

View File

@@ -3,7 +3,7 @@ package util
import (
"time"
"github.com/tx7do/kratos-utils/trans"
"github.com/tx7do/go-utils/trans"
)
var DefaultTimeLocation *time.Location

View File

@@ -5,7 +5,7 @@ import (
"testing"
"time"
"github.com/tx7do/kratos-utils/trans"
"github.com/tx7do/go-utils/trans"
)
func TestUnixMilliToStringPtr(t *testing.T) {

19
upgrade.bat Normal file
View File

@@ -0,0 +1,19 @@
echo off
::指定起始文件夹
set DIR="%cd%"
go get all
go mod tidy
cd %DIR%/bank_card
go get all
go mod tidy
cd %DIR%/entgo
go get all
go mod tidy
cd %DIR%/geoip
go get all
go mod tidy