fixed doc env vars + mongo v2 migration

This commit is contained in:
Stephan D
2026-01-31 00:26:42 +01:00
parent cbb7bd8ba6
commit 1aa7e287fb
356 changed files with 1705 additions and 1729 deletions

View File

@@ -3,7 +3,7 @@ package repository
import (
"github.com/tech/sendico/pkg/db/repository/builder"
"github.com/tech/sendico/pkg/model"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/v2/bson"
)
// AccountBoundFilter provides factory methods for creating account-bound filters
@@ -19,7 +19,7 @@ func NewAccountBoundFilter() *AccountBoundFilter {
// - accountRef matches the provided accountRef, OR
// - accountRef is nil/null, OR
// - accountRef field doesn't exist
func (f *AccountBoundFilter) WithoutOrg(accountRef primitive.ObjectID) builder.Query {
func (f *AccountBoundFilter) WithoutOrg(accountRef bson.ObjectID) builder.Query {
return Query().Or(
AccountFilter(accountRef),
Filter(model.AccountRefField, nil),
@@ -33,7 +33,7 @@ func (f *AccountBoundFilter) WithoutOrg(accountRef primitive.ObjectID) builder.Q
// - accountRef is nil/null, OR
// - accountRef field doesn't exist
// AND combines with organization filter
func (f *AccountBoundFilter) WithOrg(accountRef, organizationRef primitive.ObjectID) builder.Query {
func (f *AccountBoundFilter) WithOrg(accountRef, organizationRef bson.ObjectID) builder.Query {
return Query().And(
OrgFilter(organizationRef),
f.WithoutOrg(accountRef),
@@ -41,13 +41,13 @@ func (f *AccountBoundFilter) WithOrg(accountRef, organizationRef primitive.Objec
}
// WithQuery creates a filter for account-bound objects with additional query and organization filter
func (f *AccountBoundFilter) WithQuery(accountRef, organizationRef primitive.ObjectID, additionalQuery builder.Query) builder.Query {
func (f *AccountBoundFilter) WithQuery(accountRef, organizationRef bson.ObjectID, additionalQuery builder.Query) builder.Query {
accountQuery := f.WithOrg(accountRef, organizationRef)
return additionalQuery.And(accountQuery)
}
// WithQueryNoOrg creates a filter for account-bound objects with additional query but no org filter
func (f *AccountBoundFilter) WithQueryNoOrg(accountRef primitive.ObjectID, additionalQuery builder.Query) builder.Query {
func (f *AccountBoundFilter) WithQueryNoOrg(accountRef bson.ObjectID, additionalQuery builder.Query) builder.Query {
accountQuery := f.WithoutOrg(accountRef)
return additionalQuery.And(accountQuery)
}
@@ -58,21 +58,21 @@ var DefaultAccountBoundFilter = NewAccountBoundFilter()
// Convenience functions that use the global factory instance
// WithOrg is a convenience function that uses the default factory
func WithOrg(accountRef, organizationRef primitive.ObjectID) builder.Query {
func WithOrg(accountRef, organizationRef bson.ObjectID) builder.Query {
return DefaultAccountBoundFilter.WithOrg(accountRef, organizationRef)
}
// WithoutOrg is a convenience function that uses the default factory
func WithoutOrg(accountRef primitive.ObjectID) builder.Query {
func WithoutOrg(accountRef bson.ObjectID) builder.Query {
return DefaultAccountBoundFilter.WithoutOrg(accountRef)
}
// WithQuery is a convenience function that uses the default factory
func WithQuery(accountRef, organizationRef primitive.ObjectID, additionalQuery builder.Query) builder.Query {
func WithQuery(accountRef, organizationRef bson.ObjectID, additionalQuery builder.Query) builder.Query {
return DefaultAccountBoundFilter.WithQuery(accountRef, organizationRef, additionalQuery)
}
// WithQueryNoOrg is a convenience function that uses the default factory
func WithQueryNoOrg(accountRef primitive.ObjectID, additionalQuery builder.Query) builder.Query {
func WithQueryNoOrg(accountRef bson.ObjectID, additionalQuery builder.Query) builder.Query {
return DefaultAccountBoundFilter.WithQueryNoOrg(accountRef, additionalQuery)
}

View File

@@ -1,6 +1,6 @@
package builder
import "go.mongodb.org/mongo-driver/bson"
import "go.mongodb.org/mongo-driver/v2/bson"
type Accumulator interface {
Build() bson.D

View File

@@ -1,6 +1,6 @@
package builder
import "go.mongodb.org/mongo-driver/bson"
import "go.mongodb.org/mongo-driver/v2/bson"
type Alias interface {
Field() Field

View File

@@ -1,6 +1,6 @@
package builder
import "go.mongodb.org/mongo-driver/bson"
import "go.mongodb.org/mongo-driver/v2/bson"
type Array interface {
Build() bson.A

View File

@@ -1,6 +1,6 @@
package builder
import "go.mongodb.org/mongo-driver/bson"
import "go.mongodb.org/mongo-driver/v2/bson"
// Patch defines operations for constructing partial update documents.
// Each builder method returns the same Patch instance to allow chaining.

View File

@@ -2,7 +2,7 @@ package builder
import (
"github.com/tech/sendico/pkg/mservice"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/v2/mongo"
)
type Pipeline interface {

View File

@@ -1,6 +1,6 @@
package builder
import "go.mongodb.org/mongo-driver/bson"
import "go.mongodb.org/mongo-driver/v2/bson"
type Projection interface {
Build() bson.D

View File

@@ -1,8 +1,8 @@
package builder
import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo/options"
)
type Query interface {
@@ -20,5 +20,5 @@ type Query interface {
Archived(isArchived *bool) Query
BuildPipeline() bson.D
BuildQuery() bson.D
BuildOptions() *options.FindOptions
BuildOptions() *options.FindOptionsBuilder
}

View File

@@ -5,7 +5,7 @@ import (
"github.com/tech/sendico/pkg/db/repository/builder"
"github.com/tech/sendico/pkg/db/storable"
"github.com/tech/sendico/pkg/model"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/v2/bson"
)
func Query() builder.Query {
@@ -52,7 +52,7 @@ func IsArchivedField() builder.Field {
return Field(storable.IsArchivedField)
}
func IDFilter(ref primitive.ObjectID) builder.Query {
func IDFilter(ref bson.ObjectID) builder.Query {
return Query().Filter(IDField(), ref)
}
@@ -72,7 +72,7 @@ func OrgField() builder.Field {
return Field(storable.OrganizationRefField)
}
func OrgFilter(ref primitive.ObjectID) builder.Query {
func OrgFilter(ref bson.ObjectID) builder.Query {
return Query().Filter(OrgField(), ref)
}
@@ -80,7 +80,7 @@ func ProjectField() builder.Field {
return Field("projectRef")
}
func ProjectFilter(ref primitive.ObjectID) builder.Query {
func ProjectFilter(ref bson.ObjectID) builder.Query {
return Query().Filter(ProjectField(), ref)
}
@@ -88,7 +88,7 @@ func AccountField() builder.Field {
return Field(model.AccountRefField)
}
func AccountFilter(ref primitive.ObjectID) builder.Query {
func AccountFilter(ref bson.ObjectID) builder.Query {
return Query().Filter(AccountField(), ref)
}
@@ -96,7 +96,7 @@ func StatusRefField() builder.Field {
return Field("statusRef")
}
func StatusRefFilter(ref primitive.ObjectID) builder.Query {
func StatusRefFilter(ref bson.ObjectID) builder.Query {
return Query().Filter(StatusRefField(), ref)
}
@@ -104,7 +104,7 @@ func PriorityRefField() builder.Field {
return Field("priorityRef")
}
func PriorityRefFilter(ref primitive.ObjectID) builder.Query {
func PriorityRefFilter(ref bson.ObjectID) builder.Query {
return Query().Filter(PriorityRefField(), ref)
}

View File

@@ -1,5 +1,5 @@
package repository
import "go.mongodb.org/mongo-driver/mongo"
import "go.mongodb.org/mongo-driver/v2/mongo"
type DecodingFunc = func(r *mongo.Cursor) error

View File

@@ -4,13 +4,13 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/v2/bson"
)
func TestAccountBoundFilter_WithOrg(t *testing.T) {
factory := NewAccountBoundFilter()
accountRef := primitive.NewObjectID()
orgRef := primitive.NewObjectID()
accountRef := bson.NewObjectID()
orgRef := bson.NewObjectID()
query := factory.WithOrg(accountRef, orgRef)
@@ -20,7 +20,7 @@ func TestAccountBoundFilter_WithOrg(t *testing.T) {
func TestAccountBoundFilter_WithoutOrg(t *testing.T) {
factory := NewAccountBoundFilter()
accountRef := primitive.NewObjectID()
accountRef := bson.NewObjectID()
query := factory.WithoutOrg(accountRef)
@@ -30,8 +30,8 @@ func TestAccountBoundFilter_WithoutOrg(t *testing.T) {
func TestAccountBoundFilter_WithQuery(t *testing.T) {
factory := NewAccountBoundFilter()
accountRef := primitive.NewObjectID()
orgRef := primitive.NewObjectID()
accountRef := bson.NewObjectID()
orgRef := bson.NewObjectID()
additionalQuery := Query().Filter(Field("status"), "active")
query := factory.WithQuery(accountRef, orgRef, additionalQuery)
@@ -42,7 +42,7 @@ func TestAccountBoundFilter_WithQuery(t *testing.T) {
func TestAccountBoundFilter_WithQueryNoOrg(t *testing.T) {
factory := NewAccountBoundFilter()
accountRef := primitive.NewObjectID()
accountRef := bson.NewObjectID()
additionalQuery := Query().Filter(Field("status"), "active")
query := factory.WithQueryNoOrg(accountRef, additionalQuery)
@@ -60,8 +60,8 @@ func TestDefaultAccountBoundFilter(t *testing.T) {
}
func TestConvenienceFunctions(t *testing.T) {
accountRef := primitive.NewObjectID()
orgRef := primitive.NewObjectID()
accountRef := bson.NewObjectID()
orgRef := bson.NewObjectID()
additionalQuery := Query().Filter(Field("status"), "active")
// Test convenience functions
@@ -80,8 +80,8 @@ func TestConvenienceFunctions(t *testing.T) {
func TestFilterFactoryConsistency(t *testing.T) {
factory := NewAccountBoundFilter()
accountRef := primitive.NewObjectID()
orgRef := primitive.NewObjectID()
accountRef := bson.NewObjectID()
orgRef := bson.NewObjectID()
// Test that factory methods and convenience functions produce the same result
query1 := factory.WithOrg(accountRef, orgRef)

View File

@@ -9,8 +9,8 @@ import (
ri "github.com/tech/sendico/pkg/db/repository/index"
"github.com/tech/sendico/pkg/db/storable"
"github.com/tech/sendico/pkg/model"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo"
)
type (
@@ -24,18 +24,18 @@ type Repository interface {
Aggregate(ctx context.Context, builder builder.Pipeline, decoder rd.DecodingFunc) error
Insert(ctx context.Context, obj storable.Storable, getFilter builder.Query) error
InsertMany(ctx context.Context, objects []storable.Storable) error
Get(ctx context.Context, id primitive.ObjectID, result storable.Storable) error
Get(ctx context.Context, id bson.ObjectID, result storable.Storable) error
FindOneByFilter(ctx context.Context, builder builder.Query, result storable.Storable) error
FindManyByFilter(ctx context.Context, builder builder.Query, decoder rd.DecodingFunc) error
Update(ctx context.Context, obj storable.Storable) error
// Patch applies partial updates defined by patch to the document identified by id.
Patch(ctx context.Context, id primitive.ObjectID, patch PatchDoc) error
Patch(ctx context.Context, id bson.ObjectID, patch PatchDoc) error
// PatchMany applies partial updates defined by patch to all documents matching filter and returns the number of updated documents.
PatchMany(ctx context.Context, filter FilterQuery, patch PatchDoc) (int, error)
Delete(ctx context.Context, id primitive.ObjectID) error
Delete(ctx context.Context, id bson.ObjectID) error
DeleteMany(ctx context.Context, query builder.Query) error
CreateIndex(def *ri.Definition) error
ListIDs(ctx context.Context, query builder.Query) ([]primitive.ObjectID, error)
ListIDs(ctx context.Context, query builder.Query) ([]bson.ObjectID, error)
ListPermissionBound(ctx context.Context, query builder.Query) ([]model.PermissionBoundStorable, error)
ListAccountBound(ctx context.Context, query builder.Query) ([]model.AccountBoundStorable, error)
Collection() string