package sql import ( "context" "tercul/internal/domain/auth" "time" "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) auth.AuthRepository { return &authRepository{ db: db, tracer: otel.Tracer("auth.repository"), } } func (r *authRepository) StoreToken(ctx context.Context, userID uint, token string, expiresAt time.Time) error { ctx, span := r.tracer.Start(ctx, "StoreToken") defer span.End() session := &auth.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(&auth.UserSession{}).Error }