add func convert #8

Merged
sinhluu merged 3 commits from add-convert into master 2022-12-14 10:07:24 +00:00
3 changed files with 87 additions and 0 deletions
Showing only changes of commit 384922ab68 - Show all commits

82
convert.go Normal file
View File

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

1
go.mod
View File

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

4
go.sum
View File

@ -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=