package sql import ( "context" "tercul/internal/domain" "tercul/internal/platform/config" "time" "github.com/google/uuid" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/trace" "gorm.io/gorm" ) type authRepository struct { db *gorm.DB tracer trace.Tracer } func NewAuthRepository(db *gorm.DB, cfg *config.Config) domain.AuthRepository { return &authRepository{ db: db, tracer: otel.Tracer("auth.repository"), } } func (r *authRepository) StoreToken(ctx context.Context, userID uuid.UUID, token string, expiresAt time.Time) error { ctx, span := r.tracer.Start(ctx, "StoreToken") defer span.End() session := &domain.UserSession{ UserID: userID, Token: token, ExpiresAt: expiresAt, } return r.db.WithContext(ctx).Create(session).Error } func (r *authRepository) DeleteToken(ctx context.Context, token string) error { ctx, span := r.tracer.Start(ctx, "DeleteToken") defer span.End() return r.db.WithContext(ctx).Where("token = ?", token).Delete(&domain.UserSession{}).Error }