Documentation
¶
Overview ¶
Package mongodb provides MongoDB database connectivity and repository operations.
Package mongodb provides MongoDB database connectivity and operations.
Package mongodb provides MongoDB database connectivity and operations.
Package mongodb provides MongoDB database connectivity and repository operations.
Package mongodb provides MongoDB database connectivity and repository operations.
Index ¶
- Variables
- func BuildPipelineFromDSL(filter map[string]interface{}, sort map[string]string, limit, skip *int64, ...) []bson.M
- func ContainsRegex(substring string) primitive.Regex
- func EndsWithRegex(suffix string) primitive.Regex
- func EscapeRegexPattern(pattern string) string
- func MustConnectionString(ctx context.Context, container *mongodb.MongoDBContainer) string
- func ParseDSLFilter(dslFilter map[string]interface{}) bson.M
- func RunWithTestContainer(t *testing.T, database string, fn func(t *testing.T, client *Client))
- func SetupTestContainerWithClient(t *testing.T, database string) (*TestContainer, *Client)
- func StartsWithRegex(prefix string) primitive.Regex
- func WildcardToRegex(pattern string) string
- type ArrayExpr
- type Client
- func (c *Client) Client() *mongo.Client
- func (c *Client) Close(ctx context.Context) error
- func (c *Client) Collection(name string) *mongo.Collection
- func (c *Client) Database() *mongo.Database
- func (c *Client) GetPoolStats(ctx context.Context) (PoolStats, error)
- func (c *Client) IsClosed() bool
- func (c *Client) WithTransaction(ctx context.Context, fn func(sessCtx mongo.SessionContext) error) error
- type Config
- type ConfigAdapter
- func (a *ConfigAdapter) Create(ctx context.Context, c *models.Config) error
- func (a *ConfigAdapter) Delete(ctx context.Context, id string) error
- func (a *ConfigAdapter) GetByID(ctx context.Context, id string) (*models.Config, error)
- func (a *ConfigAdapter) GetByName(ctx context.Context, name string) (*models.Config, error)
- func (a *ConfigAdapter) List(ctx context.Context, limit, offset int) ([]*models.Config, error)
- func (a *ConfigAdapter) Update(ctx context.Context, c *models.Config) error
- type DSLQuery
- type DeploymentAdapter
- func (a *DeploymentAdapter) Create(ctx context.Context, d *models.Deployment) error
- func (a *DeploymentAdapter) Delete(ctx context.Context, id string) error
- func (a *DeploymentAdapter) GetByID(ctx context.Context, id string) (*models.Deployment, error)
- func (a *DeploymentAdapter) GetByName(ctx context.Context, name string) (*models.Deployment, error)
- func (a *DeploymentAdapter) List(ctx context.Context, limit, offset int) ([]*models.Deployment, error)
- func (a *DeploymentAdapter) Update(ctx context.Context, d *models.Deployment) error
- type Document
- type ExecutionAdapter
- func (a *ExecutionAdapter) Create(ctx context.Context, e *models.Execution) error
- func (a *ExecutionAdapter) Delete(ctx context.Context, id string) error
- func (a *ExecutionAdapter) GetByID(ctx context.Context, id string) (*models.Execution, error)
- func (a *ExecutionAdapter) List(ctx context.Context, limit, offset int) ([]*models.Execution, error)
- func (a *ExecutionAdapter) ListByDeployment(ctx context.Context, deploymentID string, limit, offset int) ([]*models.Execution, error)
- func (a *ExecutionAdapter) Update(ctx context.Context, e *models.Execution) error
- type Filter
- type FilterExpr
- type FilterOp
- type FindOptions
- type HealthCheck
- type HealthCheckResult
- type HealthStatus
- type LogicalExpr
- type PoolStats
- type QueryBuilder
- func (qb *QueryBuilder) All(field string, values []interface{}) *QueryBuilder
- func (qb *QueryBuilder) And(filters ...FilterExpr) *QueryBuilder
- func (qb *QueryBuilder) AndGroup(groups ...LogicalExpr) *QueryBuilder
- func (qb *QueryBuilder) BuildFilter() bson.M
- func (qb *QueryBuilder) BuildPipeline() []bson.M
- func (qb *QueryBuilder) BuildSort() bson.D
- func (qb *QueryBuilder) ElemMatch(field string, conditions bson.M) *QueryBuilder
- func (qb *QueryBuilder) Eq(field string, value interface{}) *QueryBuilder
- func (qb *QueryBuilder) Errors() []error
- func (qb *QueryBuilder) Exclude(fields ...string) *QueryBuilder
- func (qb *QueryBuilder) Gt(field string, value interface{}) *QueryBuilder
- func (qb *QueryBuilder) Gte(field string, value interface{}) *QueryBuilder
- func (qb *QueryBuilder) HasErrors() bool
- func (qb *QueryBuilder) In(field string, values interface{}) *QueryBuilder
- func (qb *QueryBuilder) Limit(n int64) *QueryBuilder
- func (qb *QueryBuilder) Lt(field string, value interface{}) *QueryBuilder
- func (qb *QueryBuilder) Lte(field string, value interface{}) *QueryBuilder
- func (qb *QueryBuilder) Ne(field string, value interface{}) *QueryBuilder
- func (qb *QueryBuilder) Nin(field string, values interface{}) *QueryBuilder
- func (qb *QueryBuilder) Not(filter FilterExpr) *QueryBuilder
- func (qb *QueryBuilder) Or(filters ...FilterExpr) *QueryBuilder
- func (qb *QueryBuilder) OrGroup(groups ...LogicalExpr) *QueryBuilder
- func (qb *QueryBuilder) Project(projection bson.M) *QueryBuilder
- func (qb *QueryBuilder) Regex(field string, pattern string, options string) *QueryBuilder
- func (qb *QueryBuilder) RegexCaseInsensitive(field string, pattern string) *QueryBuilder
- func (qb *QueryBuilder) Select(fields ...string) *QueryBuilder
- func (qb *QueryBuilder) Size(field string, size int) *QueryBuilder
- func (qb *QueryBuilder) Skip(n int64) *QueryBuilder
- func (qb *QueryBuilder) Sort(field string, direction SortDirection) *QueryBuilder
- func (qb *QueryBuilder) SortAscending(field string) *QueryBuilder
- func (qb *QueryBuilder) SortDescending(field string) *QueryBuilder
- func (qb *QueryBuilder) Where(field string, value interface{}) *QueryBuilder
- type Repository
- func (r *Repository) Collection() *mongo.Collection
- func (r *Repository) Count(ctx context.Context, filter Filter) (int64, error)
- func (r *Repository) DeleteMany(ctx context.Context, filter Filter) (int64, error)
- func (r *Repository) DeleteOne(ctx context.Context, filter Filter) (int64, error)
- func (r *Repository) EnsureIndex(ctx context.Context, fields []string, unique bool) error
- func (r *Repository) EnsureIndexes(ctx context.Context, indexes []*ast.MongoIndexDecl) error
- func (r *Repository) ExecuteQuery(ctx context.Context, q *query.Query) ([]Document, error)
- func (r *Repository) Exists(ctx context.Context, filter Filter) (bool, error)
- func (r *Repository) Find(ctx context.Context, filter Filter, opts *FindOptions) ([]Document, error)
- func (r *Repository) FindByID(ctx context.Context, id string) (Document, error)
- func (r *Repository) FindOne(ctx context.Context, filter Filter) (Document, error)
- func (r *Repository) FindWithPagination(ctx context.Context, filter Filter, page pagination.PageRequest, ...) (*pagination.PageResponse[Document], error)
- func (r *Repository) InsertMany(ctx context.Context, docs []Document) ([]string, error)
- func (r *Repository) InsertOne(ctx context.Context, doc Document) (string, error)
- func (r *Repository) UpdateMany(ctx context.Context, filter Filter, update Update) (int64, error)
- func (r *Repository) UpdateOne(ctx context.Context, filter Filter, update Update) (int64, error)
- func (r *Repository) WithTransaction(ctx context.Context, fn func(sessCtx mongo.SessionContext) error) error
- type SortDirection
- type SortExpr
- type TestContainer
- type TestContainerConfig
- type Update
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotFound = errors.New("document not found") ErrDuplicateKey = errors.New("duplicate key error") ErrInvalidID = errors.New("invalid document ID") ErrInvalidFilter = errors.New("invalid filter") ErrNoDocuments = errors.New("no documents matched") ErrClientClosed = errors.New("mongodb client is closed") )
Common errors returned by repository operations.
Functions ¶
func BuildPipelineFromDSL ¶
func BuildPipelineFromDSL(filter map[string]interface{}, sort map[string]string, limit, skip *int64, project []string) []bson.M
BuildPipelineFromDSL creates an aggregation pipeline directly from a DSL filter map.
func ContainsRegex ¶
ContainsRegex creates a case-insensitive contains regex pattern.
func EndsWithRegex ¶
EndsWithRegex creates a case-insensitive ends-with regex pattern.
func EscapeRegexPattern ¶
EscapeRegexPattern escapes special regex characters in a pattern string.
func MustConnectionString ¶
func MustConnectionString(ctx context.Context, container *mongodb.MongoDBContainer) string
MustConnectionString returns the connection string or panics. This is useful for integration tests that need the URI.
func ParseDSLFilter ¶
ParseDSLFilter parses a DSL filter map into MongoDB filter.
func RunWithTestContainer ¶
RunWithTestContainer is a helper for running tests with a MongoDB container.
func SetupTestContainerWithClient ¶
func SetupTestContainerWithClient(t *testing.T, database string) (*TestContainer, *Client)
SetupTestContainerWithClient creates a MongoDB container and connects a client.
func StartsWithRegex ¶
StartsWithRegex creates a case-insensitive starts-with regex pattern.
func WildcardToRegex ¶
WildcardToRegex converts wildcard patterns (* and ?) to regex.
Types ¶
type ArrayExpr ¶
type ArrayExpr struct {
Field string
Type string // "elemMatch", "all", "size"
Value interface{} // for size: int, for all: []interface{}, for elemMatch: bson.M
}
ArrayExpr represents an array query expression.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps a MongoDB client with connection management and logging.
func (*Client) Collection ¶
func (c *Client) Collection(name string) *mongo.Collection
Collection returns a collection from the database.
func (*Client) GetPoolStats ¶
GetPoolStats returns the current connection pool statistics. Note: The mongo-driver doesn't expose detailed pool stats directly, so this returns information based on server status.
func (*Client) WithTransaction ¶
func (c *Client) WithTransaction(ctx context.Context, fn func(sessCtx mongo.SessionContext) error) error
WithTransaction executes a function within a MongoDB transaction.
type Config ¶
type Config struct {
// URI is the MongoDB connection string (e.g., mongodb://localhost:27017)
URI string
// Database is the name of the database to connect to
Database string
// MinPoolSize is the minimum number of connections in the pool
MinPoolSize uint64
// MaxPoolSize is the maximum number of connections in the pool
MaxPoolSize uint64
// ConnectTimeout is the timeout for establishing a connection
ConnectTimeout time.Duration
// SocketTimeout is the timeout for socket reads/writes
SocketTimeout time.Duration
// ServerSelectionTimeout is the timeout for server selection
ServerSelectionTimeout time.Duration
// RetryWrites enables retryable writes
RetryWrites bool
// RetryReads enables retryable reads
RetryReads bool
// MaxRetries is the maximum number of retry attempts for transient failures
MaxRetries int
// RetryBackoff is the base backoff duration between retries
RetryBackoff time.Duration
// MaxRetryBackoff is the maximum backoff duration between retries
MaxRetryBackoff time.Duration
}
Config holds MongoDB connection configuration.
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns a Config with sensible defaults.
type ConfigAdapter ¶
type ConfigAdapter struct {
// contains filtered or unexported fields
}
ConfigAdapter adapts MongoDB Repository to a config repository interface.
func NewConfigAdapter ¶
func NewConfigAdapter(client *Client, logger *slog.Logger) *ConfigAdapter
NewConfigAdapter creates a new ConfigAdapter.
func (*ConfigAdapter) Delete ¶
func (a *ConfigAdapter) Delete(ctx context.Context, id string) error
Delete removes a config.
type DSLQuery ¶
type DSLQuery struct {
Name string
Collection string
Filter map[string]interface{}
Sort map[string]string
Limit *int64
Skip *int64
Select []string
}
DSLQuery represents a parsed DSL query.
type DeploymentAdapter ¶
type DeploymentAdapter struct {
// contains filtered or unexported fields
}
DeploymentAdapter adapts MongoDB Repository to a deployment repository interface.
func NewDeploymentAdapter ¶
func NewDeploymentAdapter(client *Client, logger *slog.Logger) *DeploymentAdapter
NewDeploymentAdapter creates a new DeploymentAdapter.
func (*DeploymentAdapter) Create ¶
func (a *DeploymentAdapter) Create(ctx context.Context, d *models.Deployment) error
Create inserts a new deployment.
func (*DeploymentAdapter) Delete ¶
func (a *DeploymentAdapter) Delete(ctx context.Context, id string) error
Delete removes a deployment.
func (*DeploymentAdapter) GetByID ¶
func (a *DeploymentAdapter) GetByID(ctx context.Context, id string) (*models.Deployment, error)
GetByID retrieves a deployment by its ID.
func (*DeploymentAdapter) GetByName ¶
func (a *DeploymentAdapter) GetByName(ctx context.Context, name string) (*models.Deployment, error)
GetByName retrieves a deployment by its name.
func (*DeploymentAdapter) List ¶
func (a *DeploymentAdapter) List(ctx context.Context, limit, offset int) ([]*models.Deployment, error)
List retrieves all deployments with pagination.
func (*DeploymentAdapter) Update ¶
func (a *DeploymentAdapter) Update(ctx context.Context, d *models.Deployment) error
Update updates an existing deployment.
type Document ¶
type Document map[string]interface{}
Document represents a generic MongoDB document.
type ExecutionAdapter ¶
type ExecutionAdapter struct {
// contains filtered or unexported fields
}
ExecutionAdapter adapts MongoDB Repository to an execution repository interface.
func NewExecutionAdapter ¶
func NewExecutionAdapter(client *Client, logger *slog.Logger) *ExecutionAdapter
NewExecutionAdapter creates a new ExecutionAdapter.
func (*ExecutionAdapter) Delete ¶
func (a *ExecutionAdapter) Delete(ctx context.Context, id string) error
Delete removes an execution.
func (*ExecutionAdapter) List ¶
func (a *ExecutionAdapter) List(ctx context.Context, limit, offset int) ([]*models.Execution, error)
List retrieves all executions with pagination.
func (*ExecutionAdapter) ListByDeployment ¶
func (a *ExecutionAdapter) ListByDeployment(ctx context.Context, deploymentID string, limit, offset int) ([]*models.Execution, error)
ListByDeployment retrieves executions for a specific deployment.
type FilterExpr ¶
type FilterExpr struct {
Field string
Operator FilterOp
Value interface{}
Options string // for regex options like "i" (case-insensitive)
}
FilterExpr represents a single filter expression.
type FindOptions ¶
FindOptions contains options for find operations.
type HealthCheck ¶
type HealthCheck struct {
// contains filtered or unexported fields
}
HealthCheck provides health check functionality for MongoDB connections.
func NewHealthCheck ¶
func NewHealthCheck(client *Client, logger *slog.Logger) *HealthCheck
NewHealthCheck creates a new health check for the given client.
func (*HealthCheck) Check ¶
func (h *HealthCheck) Check(ctx context.Context) HealthCheckResult
Check performs a health check on the MongoDB connection.
func (*HealthCheck) CheckReadiness ¶
func (h *HealthCheck) CheckReadiness(ctx context.Context) error
CheckReadiness verifies the database is ready to accept operations.
func (*HealthCheck) IsHealthy ¶
func (h *HealthCheck) IsHealthy(ctx context.Context) bool
IsHealthy returns true if the connection is healthy.
func (*HealthCheck) Ping ¶
func (h *HealthCheck) Ping(ctx context.Context) error
Ping performs a simple ping to verify connectivity.
func (*HealthCheck) SetTimeout ¶
func (h *HealthCheck) SetTimeout(timeout time.Duration)
SetTimeout sets the timeout for health check operations.
type HealthCheckResult ¶
type HealthCheckResult struct {
// Status is the overall health status
Status HealthStatus
// Message provides additional details about the health status
Message string
// Latency is the time taken to perform the health check
Latency time.Duration
// Details contains additional health check information
Details map[string]interface{}
// Timestamp is when the health check was performed
Timestamp time.Time
}
HealthCheckResult contains the result of a health check.
type HealthStatus ¶
type HealthStatus string
HealthStatus represents the health state of the MongoDB connection.
const ( // HealthStatusHealthy indicates the connection is healthy. HealthStatusHealthy HealthStatus = "healthy" // HealthStatusUnhealthy indicates the connection is unhealthy. HealthStatusUnhealthy HealthStatus = "unhealthy" // HealthStatusDegraded indicates the connection is partially available. HealthStatusDegraded HealthStatus = "degraded" )
type LogicalExpr ¶
type LogicalExpr struct {
Type string // "and", "or", "not"
Filters []FilterExpr
Groups []LogicalExpr
}
LogicalExpr represents a logical grouping of filters.
type PoolStats ¶
type PoolStats struct {
// TotalConnections is the total number of connections in the pool
TotalConnections int
// AvailableConnections is the number of available connections
AvailableConnections int
// InUseConnections is the number of connections currently in use
InUseConnections int
}
PoolStats holds connection pool statistics.
type QueryBuilder ¶
type QueryBuilder struct {
// contains filtered or unexported fields
}
QueryBuilder provides a fluent API for building MongoDB aggregation pipelines.
func BuildFromDSL ¶
func BuildFromDSL(dsl *DSLQuery) *QueryBuilder
BuildFromDSL creates a QueryBuilder from a DSL query definition.
func NewQueryBuilder ¶
func NewQueryBuilder(collection string) *QueryBuilder
NewQueryBuilder creates a new QueryBuilder for the specified collection.
func (*QueryBuilder) All ¶
func (qb *QueryBuilder) All(field string, values []interface{}) *QueryBuilder
All adds an $all query for arrays containing all specified elements.
func (*QueryBuilder) And ¶
func (qb *QueryBuilder) And(filters ...FilterExpr) *QueryBuilder
And groups multiple filters with AND logic.
func (*QueryBuilder) AndGroup ¶
func (qb *QueryBuilder) AndGroup(groups ...LogicalExpr) *QueryBuilder
AndGroup adds an AND group with nested logical expressions.
func (*QueryBuilder) BuildFilter ¶
func (qb *QueryBuilder) BuildFilter() bson.M
BuildFilter builds the $match filter from all filter expressions.
func (*QueryBuilder) BuildPipeline ¶
func (qb *QueryBuilder) BuildPipeline() []bson.M
BuildPipeline builds the complete aggregation pipeline.
func (*QueryBuilder) BuildSort ¶
func (qb *QueryBuilder) BuildSort() bson.D
BuildSort builds the $sort stage document.
func (*QueryBuilder) ElemMatch ¶
func (qb *QueryBuilder) ElemMatch(field string, conditions bson.M) *QueryBuilder
ElemMatch adds an $elemMatch query for array elements.
func (*QueryBuilder) Eq ¶
func (qb *QueryBuilder) Eq(field string, value interface{}) *QueryBuilder
Eq adds an equality filter.
func (*QueryBuilder) Errors ¶
func (qb *QueryBuilder) Errors() []error
Errors returns any errors encountered during query building.
func (*QueryBuilder) Exclude ¶
func (qb *QueryBuilder) Exclude(fields ...string) *QueryBuilder
Exclude specifies which fields to exclude from results.
func (*QueryBuilder) Gt ¶
func (qb *QueryBuilder) Gt(field string, value interface{}) *QueryBuilder
Gt adds a greater-than filter.
func (*QueryBuilder) Gte ¶
func (qb *QueryBuilder) Gte(field string, value interface{}) *QueryBuilder
Gte adds a greater-than-or-equal filter.
func (*QueryBuilder) HasErrors ¶
func (qb *QueryBuilder) HasErrors() bool
HasErrors returns true if there are any errors.
func (*QueryBuilder) In ¶
func (qb *QueryBuilder) In(field string, values interface{}) *QueryBuilder
In adds an "in" filter for matching any value in a list.
func (*QueryBuilder) Limit ¶
func (qb *QueryBuilder) Limit(n int64) *QueryBuilder
Limit sets the maximum number of documents to return.
func (*QueryBuilder) Lt ¶
func (qb *QueryBuilder) Lt(field string, value interface{}) *QueryBuilder
Lt adds a less-than filter.
func (*QueryBuilder) Lte ¶
func (qb *QueryBuilder) Lte(field string, value interface{}) *QueryBuilder
Lte adds a less-than-or-equal filter.
func (*QueryBuilder) Ne ¶
func (qb *QueryBuilder) Ne(field string, value interface{}) *QueryBuilder
Ne adds a not-equal filter.
func (*QueryBuilder) Nin ¶
func (qb *QueryBuilder) Nin(field string, values interface{}) *QueryBuilder
Nin adds a "not in" filter for excluding values in a list.
func (*QueryBuilder) Not ¶
func (qb *QueryBuilder) Not(filter FilterExpr) *QueryBuilder
Not negates a filter.
func (*QueryBuilder) Or ¶
func (qb *QueryBuilder) Or(filters ...FilterExpr) *QueryBuilder
Or groups multiple filters with OR logic.
func (*QueryBuilder) OrGroup ¶
func (qb *QueryBuilder) OrGroup(groups ...LogicalExpr) *QueryBuilder
OrGroup adds an OR group with nested logical expressions.
func (*QueryBuilder) Project ¶
func (qb *QueryBuilder) Project(projection bson.M) *QueryBuilder
Project sets a custom projection.
func (*QueryBuilder) Regex ¶
func (qb *QueryBuilder) Regex(field string, pattern string, options string) *QueryBuilder
Regex adds a regex filter for pattern matching.
func (*QueryBuilder) RegexCaseInsensitive ¶
func (qb *QueryBuilder) RegexCaseInsensitive(field string, pattern string) *QueryBuilder
RegexCaseInsensitive adds a case-insensitive regex filter.
func (*QueryBuilder) Select ¶
func (qb *QueryBuilder) Select(fields ...string) *QueryBuilder
Select specifies which fields to include in results.
func (*QueryBuilder) Size ¶
func (qb *QueryBuilder) Size(field string, size int) *QueryBuilder
Size adds a $size query for arrays of a specific length.
func (*QueryBuilder) Skip ¶
func (qb *QueryBuilder) Skip(n int64) *QueryBuilder
Skip sets the number of documents to skip.
func (*QueryBuilder) Sort ¶
func (qb *QueryBuilder) Sort(field string, direction SortDirection) *QueryBuilder
Sort adds a sort expression.
func (*QueryBuilder) SortAscending ¶
func (qb *QueryBuilder) SortAscending(field string) *QueryBuilder
SortAscending adds an ascending sort.
func (*QueryBuilder) SortDescending ¶
func (qb *QueryBuilder) SortDescending(field string) *QueryBuilder
SortDescending adds a descending sort.
func (*QueryBuilder) Where ¶
func (qb *QueryBuilder) Where(field string, value interface{}) *QueryBuilder
Where adds an equality filter.
type Repository ¶
type Repository struct {
// contains filtered or unexported fields
}
Repository provides CRUD operations for MongoDB collections.
func NewRepository ¶
func NewRepository(client *Client, collectionName string, logger *slog.Logger) *Repository
NewRepository creates a new repository for the specified collection.
func (*Repository) Collection ¶
func (r *Repository) Collection() *mongo.Collection
Collection returns the underlying mongo.Collection.
func (*Repository) DeleteMany ¶
DeleteMany deletes multiple documents matching the filter.
func (*Repository) EnsureIndex ¶
EnsureIndex creates a single index on the specified fields.
func (*Repository) EnsureIndexes ¶
func (r *Repository) EnsureIndexes(ctx context.Context, indexes []*ast.MongoIndexDecl) error
EnsureIndexes creates indexes based on DSL MongoIndexDecl definitions.
func (*Repository) ExecuteQuery ¶
ExecuteQuery executes a query.Query and returns matching documents.
func (*Repository) Find ¶
func (r *Repository) Find(ctx context.Context, filter Filter, opts *FindOptions) ([]Document, error)
Find retrieves multiple documents matching the filter with options.
func (*Repository) FindWithPagination ¶
func (r *Repository) FindWithPagination( ctx context.Context, filter Filter, page pagination.PageRequest, sortField string, sortDir query.OrderDirection, ) (*pagination.PageResponse[Document], error)
FindWithPagination retrieves documents with pagination support.
func (*Repository) InsertMany ¶
InsertMany inserts multiple documents into the collection.
func (*Repository) UpdateMany ¶
UpdateMany updates multiple documents matching the filter.
func (*Repository) WithTransaction ¶
func (r *Repository) WithTransaction(ctx context.Context, fn func(sessCtx mongo.SessionContext) error) error
WithTransaction executes a function within a MongoDB transaction.
type SortDirection ¶
type SortDirection int
SortDirection represents sort order.
const ( // SortAsc represents ascending sort order. SortAsc SortDirection = 1 // SortDesc represents descending sort order. SortDesc SortDirection = -1 )
type SortExpr ¶
type SortExpr struct {
Field string
Direction SortDirection
}
SortExpr represents a sort expression.
type TestContainer ¶
type TestContainer struct {
Container *mongodb.MongoDBContainer
URI string
// contains filtered or unexported fields
}
TestContainer holds a MongoDB test container instance.
func SetupTestContainer ¶
func SetupTestContainer(t *testing.T) *TestContainer
SetupTestContainer creates a MongoDB container for testing. It returns a TestContainer with the connection URI and a cleanup function.
func SetupTestContainerWithConfig ¶
func SetupTestContainerWithConfig(t *testing.T, cfg TestContainerConfig) *TestContainer
SetupTestContainerWithConfig creates a MongoDB container with custom configuration.
func (*TestContainer) Cleanup ¶
func (tc *TestContainer) Cleanup(t *testing.T)
Cleanup terminates the test container.
func (*TestContainer) NewTestClient ¶
func (tc *TestContainer) NewTestClient(t *testing.T, database string) *Client
NewTestClient creates a new client connected to the test container.
type TestContainerConfig ¶
type TestContainerConfig struct {
// Image is the MongoDB image to use (default: mongo:7.0)
Image string
// Database is the database name to use
Database string
// ReplicaSet enables replica set mode (required for transactions)
ReplicaSet bool
}
TestContainerConfig holds configuration for the test container.
func DefaultTestContainerConfig ¶
func DefaultTestContainerConfig() TestContainerConfig
DefaultTestContainerConfig returns default test container configuration.