From 384922ab689978eecb2c8bfe51e0917f5e0c4730 Mon Sep 17 00:00:00 2001 From: anbuiselly <105765792+anbuiselly@users.noreply.github.com> Date: Wed, 14 Dec 2022 15:49:46 +0700 Subject: [PATCH] add func convert --- convert.go | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 1 + go.sum | 4 +++ 3 files changed, 87 insertions(+) create mode 100644 convert.go diff --git a/convert.go b/convert.go new file mode 100644 index 0000000..db27ea3 --- /dev/null +++ b/convert.go @@ -0,0 +1,82 @@ +package mongodb + +import ( + "encoding/json" + "github.com/thoas/go-funk" + "go.mongodb.org/mongo-driver/bson/primitive" + "sort" +) + +// GetAppIDFromHex ... +func GetAppIDFromHex(s string) primitive.ObjectID { + id, _ := primitive.ObjectIDFromHex(s) + return id +} + +// ConvertObjectIDsToStrings ... +func ConvertObjectIDsToStrings(ids []primitive.ObjectID) []string { + return funk.Map(ids, func(item primitive.ObjectID) string { + return item.Hex() + }).([]string) +} + +// UniqObjectIds ... +func UniqObjectIds(ids []primitive.ObjectID) []primitive.ObjectID { + idStr := ConvertObjectIDsToStrings(ids) + idStr = funk.UniqString(idStr) + return ConvertStringsToObjectIDs(idStr) +} + +// ConvertStringsToObjectIDs ... +func ConvertStringsToObjectIDs(strValues []string) []primitive.ObjectID { + return funk.Map(strValues, func(item string) primitive.ObjectID { + return GetAppIDFromHex(item) + }).([]primitive.ObjectID) +} + +// ConvertStringToObjectID ... +func ConvertStringToObjectID(id string) primitive.ObjectID { + ID, _ := primitive.ObjectIDFromHex(id) + return ID +} + +// SortObjectId ... +func SortObjectId(ids []primitive.ObjectID) []primitive.ObjectID { + sort.Slice(ids, func(i, j int) bool { + return ids[i].Timestamp().Before(ids[j].Timestamp()) + }) + return ids +} + +// ConvertInterfacesToObjectIDs ... +func ConvertInterfacesToObjectIDs(values []interface{}) []primitive.ObjectID { + s := make([]primitive.ObjectID, len(values)) + for i, v := range values { + s[i] = v.(primitive.ObjectID) + } + return s +} + +// ConvertInterfacesToStrings ... +func ConvertInterfacesToStrings(values []interface{}) []string { + s := make([]string, len(values)) + for i, v := range values { + s[i] = v.(string) + } + return s +} + +// ConvertStringsToInterfaces ... +func ConvertStringsToInterfaces(values []string) []interface{} { + s := make([]interface{}, len(values)) + for _, v := range values { + s = append(s, v) + } + return s +} + +// ConvertToJSONString ... +func ConvertToJSONString(data interface{}) string { + dataByte, _ := json.Marshal(data) + return string(dataByte) +} diff --git a/go.mod b/go.mod index 921bc3b..bca3452 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.16 require ( github.com/logrusorgru/aurora v2.0.3+incompatible + github.com/thoas/go-funk v0.9.2 // indirect go.mongodb.org/mongo-driver v1.7.1 golang.org/x/text v0.3.7 ) diff --git a/go.sum b/go.sum index 037826c..e7e1888 100644 --- a/go.sum +++ b/go.sum @@ -67,8 +67,11 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/thoas/go-funk v0.9.2 h1:oKlNYv0AY5nyf9g+/GhMgS/UO2ces0QRdPKwkhY3VCk= +github.com/thoas/go-funk v0.9.2/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= @@ -114,6 +117,7 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=