Files
mongo/cursor.go
George Suntres 6e91f84750 Add FindOptions
2026-04-18 12:11:00 -04:00

77 lines
1.5 KiB
Go

package mongo
import (
"encoding/base64"
"fmt"
"go.mongodb.org/mongo-driver/v2/bson"
)
func EncodeCursor(v any) string {
var id string
switch v.(type) {
case bson.ObjectID:
id = v.(bson.ObjectID).Hex()
default:
id = v.(string)
}
val := fmt.Sprintf("%s", id)
return base64.RawURLEncoding.EncodeToString([]byte(val))
}
func DecodeCursor(okey string) (bson.ObjectID, error) {
data, err := base64.StdEncoding.DecodeString(okey)
if err != nil {
return bson.NilObjectID, err
}
oid, _ := bson.ObjectIDFromHex(string(data))
return oid, nil
}
// func EncodeCursor(name string, v1 any, v2 any) string {
// var otherValue string
// var otherType string
// switch v1.(type) {
// case time.Time:
// otherType = "time.Time"
// otherValue = v1.(time.Time).Truncate(time.Millisecond).Format()
// case int:
// otherType = "time.Time"
// otherValue = v1.(time.Time).Truncate(time.Millisecond).Format()
// }
// var id string
// switch v2.(type) {
// case bson.ObjectID:
// id = v2.(bson.ObjectID).Hex()
// case string:
// id = v2.(string)
// default:
// id = v2.(string)
// }
// v := fmt.Sprintf("%v|%s", misc, id)
// fmt.Println(v, name)
// return base64.RawURLEncoding.EncodeToString([]byte(v))
// }
// func DecodeCursor(okey string) (name string, v1 any, v2 any) {
// data, err := base64.StdEncoding.DecodeString(okey)
// if err != nil {
// return "", nil, nil
// }
// parts := strings.Split(string(data), "|")
// if len(parts) != 3 {
// return "", nil, nil
// }
// }