This commit is contained in:
Stephan D
2026-03-10 12:31:09 +01:00
parent d87e709f43
commit e77d1ab793
287 changed files with 2089 additions and 1550 deletions

View File

@@ -19,7 +19,7 @@ func Create(logger mlogger.Logger, db *mongo.Database) (*AccountDB, error) {
DBImp: *template.Create[*model.Account](logger, mservice.Accounts, db),
}
if err := p.DBImp.Repository.CreateIndex(&ri.Definition{
if err := p.Repository.CreateIndex(&ri.Definition{
Keys: []ri.Key{{Field: "login", Sort: ri.Asc}},
Unique: true,
}); err != nil {

View File

@@ -14,5 +14,5 @@ func (db *ChainAssetsDB) Resolve(ctx context.Context, chainAsset model.ChainAsse
repository.Query().Filter(assetField.Dot("chain"), chainAsset.Chain),
repository.Query().Filter(assetField.Dot("tokenSymbol"), chainAsset.TokenSymbol),
)
return &assetDescription, db.DBImp.FindOne(ctx, q, &assetDescription)
return &assetDescription, db.FindOne(ctx, q, &assetDescription)
}

View File

@@ -81,7 +81,7 @@ type computeImp struct {
func (a *computeImp) Build() any {
return bson.D{
{Key: string(a.field.Build()), Value: a.expression.Build()},
{Key: a.field.Build(), Value: a.expression.Build()},
}
}

View File

@@ -101,7 +101,9 @@ func (r *MongoRepository) executeQuery(ctx context.Context, queryFunc QueryFunc,
if err != nil {
return err
}
defer cursor.Close(ctx)
defer func() {
_ = cursor.Close(ctx)
}()
for cursor.Next(ctx) {
if err = decoder(cursor); err != nil {
@@ -165,7 +167,9 @@ func (r *MongoRepository) ListIDs(ctx context.Context, query builder.Query) ([]b
if err != nil {
return nil, err
}
defer cursor.Close(ctx)
defer func() {
_ = cursor.Close(ctx)
}()
var ids []bson.ObjectID
for cursor.Next(ctx) {
@@ -196,7 +200,9 @@ func (r *MongoRepository) ListPermissionBound(ctx context.Context, query builder
if err != nil {
return nil, err
}
defer cursor.Close(ctx)
defer func() {
_ = cursor.Close(ctx)
}()
result := make([]model.PermissionBoundStorable, 0)
@@ -226,7 +232,9 @@ func (r *MongoRepository) ListAccountBound(ctx context.Context, query builder.Qu
if err != nil {
return nil, err
}
defer cursor.Close(ctx)
defer func() {
_ = cursor.Close(ctx)
}()
result := make([]model.AccountBoundStorable, 0)

View File

@@ -45,7 +45,8 @@ func NewMongoTimeSeriesCollection(ctx context.Context, db *mongo.Database, tsOpt
}
if err := db.CreateCollection(ctx, tsOpts.Collection, collOpts); err != nil {
if cmdErr, ok := err.(mongo.CommandError); !ok || cmdErr.Code != 48 {
var cmdErr mongo.CommandError
if !errors.As(err, &cmdErr) || cmdErr.Code != 48 {
return nil, err
}
}
@@ -86,7 +87,9 @@ func (ts *TimeSeries) executeQuery(ctx context.Context, decoder rdecoder.Decodin
if err != nil {
return err
}
defer cursor.Close(ctx)
defer func() {
_ = cursor.Close(ctx)
}()
for cursor.Next(ctx) {
if err := cursor.Err(); err != nil {

View File

@@ -71,7 +71,7 @@ func (db *verificationDB) Consume(
zap.String("account_ref", accountRefHex),
)
var direct model.VerificationToken
err := db.DBImp.FindOne(ctx, magicFilter, &direct)
err := db.FindOne(ctx, magicFilter, &direct)
switch {
case err == nil:
token = &direct
@@ -118,7 +118,7 @@ func (db *verificationDB) Consume(
zap.Any("scope_filter", scopeFilter.BuildQuery()),
)
tokens, err := mutil.GetObjects[model.VerificationToken](
ctx, db.Logger, scopeFilter, nil, db.DBImp.Repository,
ctx, db.Logger, scopeFilter, nil, db.Repository,
)
if err != nil {
if errors.Is(err, merrors.ErrNoData) {
@@ -182,7 +182,7 @@ func (db *verificationDB) Consume(
zap.String("account_ref", accountRefHex),
)
incremented, patchErr := db.DBImp.PatchMany(
incremented, patchErr := db.PatchMany(
ctx,
activeFilter,
repository.Patch().Inc(repository.Field("attempts"), 1),
@@ -272,7 +272,7 @@ func (db *verificationDB) Consume(
mzap.StorableRef(token),
)
updated, err := db.DBImp.PatchMany(
updated, err := db.PatchMany(
ctx,
consumeFilter,
repository.Patch().Set(repository.Field("usedAt"), now),
@@ -309,7 +309,7 @@ func (db *verificationDB) Consume(
}
// 5) Consume failed → increment attempts
incremented, incrementErr := db.DBImp.PatchMany(
incremented, incrementErr := db.PatchMany(
ctx,
repository.IDFilter(token.ID),
repository.Patch().Inc(repository.Field("attempts"), 1),
@@ -335,7 +335,7 @@ func (db *verificationDB) Consume(
// 6) Re-check state
var fresh model.VerificationToken
if err := db.DBImp.FindOne(ctx, repository.IDFilter(token.ID), &fresh); err != nil {
if err := db.FindOne(ctx, repository.IDFilter(token.ID), &fresh); err != nil {
db.Logger.Warn("Verification consume failed to re-check token state",
zap.String("purpose", string(purpose)),
zap.Bool("account_scoped", accountScoped),

View File

@@ -166,22 +166,22 @@ func (db *verificationDB) Create(
// Optional idempotency key support for safe retries.
if hasIdempotency {
var sameToken model.VerificationToken
err := db.DBImp.FindOne(tx, hashFilter(token.VerifyTokenHash), &sameToken)
err := db.FindOne(tx, hashFilter(token.VerifyTokenHash), &sameToken)
switch {
case err == nil:
// Same hash means the same Create operation already succeeded.
return nil, nil
return struct{}{}, nil
case errors.Is(err, merrors.ErrNoData):
default:
return nil, err
}
var existing model.VerificationToken
err = db.DBImp.FindOne(tx, idempotencyFilter(request, idempotencyKey), &existing)
err = db.FindOne(tx, idempotencyFilter(request, idempotencyKey), &existing)
switch {
case err == nil:
// Existing request with the same idempotency scope has already succeeded.
return nil, nil
return struct{}{}, nil
case errors.Is(err, merrors.ErrNoData):
default:
return nil, err
@@ -193,7 +193,7 @@ func (db *verificationDB) Create(
cutoff := now.Add(-*request.Cooldown)
var recent model.VerificationToken
err := db.DBImp.FindOne(tx, cooldownActiveContextFilter(request, now, cutoff), &recent)
err := db.FindOne(tx, cooldownActiveContextFilter(request, now, cutoff), &recent)
switch {
case err == nil:
return nil, verification.ErrorCooldownActive()
@@ -204,7 +204,7 @@ func (db *verificationDB) Create(
}
// 2) Invalidate active tokens for this context
if _, err := db.DBImp.PatchMany(
if _, err := db.PatchMany(
tx,
activeFilter,
repository.Patch().Set(repository.Field("usedAt"), now),
@@ -216,20 +216,20 @@ func (db *verificationDB) Create(
if err := db.DBImp.Create(tx, token); err != nil {
if hasIdempotency && errors.Is(err, merrors.ErrDataConflict) {
var sameToken model.VerificationToken
findErr := db.DBImp.FindOne(tx, hashFilter(token.VerifyTokenHash), &sameToken)
findErr := db.FindOne(tx, hashFilter(token.VerifyTokenHash), &sameToken)
switch {
case findErr == nil:
return nil, nil
return struct{}{}, nil
case errors.Is(findErr, merrors.ErrNoData):
default:
return nil, findErr
}
var existing model.VerificationToken
findErr = db.DBImp.FindOne(tx, idempotencyFilter(request, idempotencyKey), &existing)
findErr = db.FindOne(tx, idempotencyFilter(request, idempotencyKey), &existing)
switch {
case findErr == nil:
return nil, nil
return struct{}{}, nil
case errors.Is(findErr, merrors.ErrNoData):
default:
return nil, findErr
@@ -237,7 +237,7 @@ func (db *verificationDB) Create(
}
return nil, err
}
return nil, nil
return struct{}{}, nil
})
if err != nil {

View File

@@ -211,7 +211,7 @@ func (m *memoryTokenRepository) InsertMany(ctx context.Context, objs []storable.
}
return nil
}
func (m *memoryTokenRepository) FindManyByFilter(_ context.Context, query builder.Query, decoder rd.DecodingFunc) error {
func (m *memoryTokenRepository) FindManyByFilter(ctx context.Context, query builder.Query, decoder rd.DecodingFunc) error {
m.mu.Lock()
var matches []interface{}
for _, id := range m.order {
@@ -231,9 +231,11 @@ func (m *memoryTokenRepository) FindManyByFilter(_ context.Context, query builde
if err != nil {
return err
}
defer cur.Close(context.Background())
defer func() {
_ = cur.Close(ctx)
}()
for cur.Next(context.Background()) {
for cur.Next(ctx) {
if err := decoder(cur); err != nil {
return err
}