package auth import ( "gorm.io/gorm" "time" ) type Repository interface { CreateRefreshToken(token *RefreshToken) error ReadRefreshToken(userUuid string, tokenUuid string) (RefreshToken, error) InvalidateRefreshToken(userUuid string, tokenUuid string) error } type repo struct { db *gorm.DB } func newRepository(db *gorm.DB) *repo { return &repo{db: db} } func (r *repo) CreateRefreshToken(token *RefreshToken) error { return r.db.Create(token).Error } func (r *repo) ReadRefreshToken(userUuid string, tokenUuid string) (RefreshToken, error) { var tokenData RefreshToken if err := r.db. Where("token_uuid = ?", tokenUuid). Where("user_uuid = ?", userUuid). Where("deleted_at IS NULL"). First(&tokenData).Error; err != nil { return RefreshToken{}, err } return tokenData, nil } func (r *repo) InvalidateRefreshToken(userUuid string, tokenUuid string) error { return r.db. Model(&RefreshToken{}). Where("user_uuid = ?", userUuid). Where("token_uuid = ?", tokenUuid). Update("deleted_at", time.Now().UTC()).Error }