25 lines
772 B
Go
25 lines
772 B
Go
package refreshtokensdb
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/tech/sendico/pkg/db/repository"
|
|
"github.com/tech/sendico/pkg/db/repository/builder"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
func (db *RefreshTokenDB) RevokeAll(ctx context.Context, accountRef primitive.ObjectID, deviceID string) error {
|
|
query := repository.Query().
|
|
Filter(repository.AccountField(), accountRef).
|
|
And(repository.Query().Comparison(repository.Field("deviceId"), builder.Ne, deviceID)).
|
|
And(repository.Query().Comparison(repository.Field(IsRevokedField), builder.Eq, false))
|
|
|
|
patch := repository.Patch().
|
|
Set(repository.Field(ExpiresAtField), time.Now()).
|
|
Set(repository.Field(IsRevokedField), true)
|
|
|
|
_, err := db.Repository.PatchMany(ctx, query, patch)
|
|
return err
|
|
}
|