package mo

import (
	"go.mongodb.org/mongo-driver/bson/primitive"
	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/options"
)

type (
	ObjectID      = primitive.ObjectID
	Regex         = primitive.Regex
	JavaScript    = primitive.JavaScript
	Symbol        = primitive.Symbol
	Binary        = primitive.Binary
	CodeWithScope = primitive.CodeWithScope // Deprecated, reference https://bsonspec.org/spec.html Notes > Code
	Decimal128    = primitive.Decimal128
	Null          = primitive.Null
	DBPointer     = primitive.DBPointer
	DateTime      = primitive.DateTime
	Undefined     = primitive.Undefined
	Timestamp     = primitive.Timestamp
	D             = primitive.D
	E             = primitive.E
	M             = primitive.M
	A             = primitive.A
	MinKey        = primitive.MinKey
	MaxKey        = primitive.MaxKey

	Cursor = mongo.Cursor

	// SingleResult 内的 Err() != nil, 若查询成功但没有符合条件的结果时会返回 ErrNoDocuments, 查询失败时会返回具体错误
	SingleResult = mongo.SingleResult

	Pipeline         = mongo.Pipeline
	Client           = mongo.Client
	Database         = mongo.Database
	Collection       = mongo.Collection
	IndexModel       = mongo.IndexModel
	IndexView        = mongo.IndexView
	InsertOneResult  = mongo.InsertOneResult
	InsertManyResult = mongo.InsertManyResult
	DeleteResult     = mongo.DeleteResult
	UpdateResult     = mongo.UpdateResult

	Credential                    = options.Credential
	CreateCollectionOptions       = options.CreateCollectionOptions
	FindOptions                   = options.FindOptions
	FindOneOptions                = options.FindOneOptions
	FindOneAndDeleteOptions       = options.FindOneAndDeleteOptions
	FindOneAndUpdateOptions       = options.FindOneAndUpdateOptions
	AggregateOptions              = options.AggregateOptions
	CountOptions                  = options.CountOptions
	InsertOneOptions              = options.InsertOneOptions
	InsertManyOptions             = options.InsertManyOptions
	DeleteOptions                 = options.DeleteOptions
	UpdateOptions                 = options.UpdateOptions
	EstimatedDocumentCountOptions = options.EstimatedDocumentCountOptions
)
