You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
mongox-go-driver/mongox/mongox.go

65 lines
1.7 KiB

package mongox
import (
"context"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
)
// Reexport basic mongo structs
type (
Cursor = mongo.Cursor
Client = mongo.Client
Collection = mongo.Collection
)
// Database is the mongox database interface
type Database interface {
Client() *Client
Context() context.Context
Name() string
New(ctx context.Context) Database
GetCollectionOf(document interface{}) *Collection
Count(target interface{}, filters ...interface{}) (int64, error)
DeleteArray(target interface{}) error
DeleteOne(target interface{}, filters ...interface{}) error
LoadArray(target interface{}, filters ...interface{}) error
LoadOne(target interface{}, filters ...interface{}) error
LoadStream(target interface{}, filters ...interface{}) (StreamLoader, error)
SaveOne(source interface{}) error
}
// StreamLoader is a interface to control database cursor
type StreamLoader interface {
Cursor() *Cursor
DecodeNext() error
Decode() error
Next() error
Close() error
Err() error
}
// OIDBased is an interface for documents that have objectId type for the _id field
type OIDBased interface {
GetID() primitive.ObjectID
SetID(id primitive.ObjectID)
}
// StringBased is an interface for documents that have string type for the _id field
type StringBased interface {
GetID() string
SetID(id string)
}
// JSONBased is an interface for documents that have object type for the _id field
type JSONBased interface {
GetID() primitive.D
SetID(id primitive.D)
}
// InterfaceBased is an interface for documents that have custom declated type for the _id field
type InterfaceBased interface {
GetID() interface{}
SetID(id interface{})
}