diff --git a/convert.go b/convert.go new file mode 100644 index 0000000..187b35f --- /dev/null +++ b/convert.go @@ -0,0 +1,42 @@ +package mongodb + +import ( + "github.com/thoas/go-funk" + "go.mongodb.org/mongo-driver/bson/primitive" + "sort" +) + +// 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 ConvertStringToObjectID(item) + }).([]primitive.ObjectID) +} + +// ConvertStringToObjectID ... +func ConvertStringToObjectID(id string) primitive.ObjectID { + objID, _ := primitive.ObjectIDFromHex(id) + return objID +} + +// 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 +} 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=