Files
ds-galo/backend/internal/auth/repository.go
T
iu 04617d1cdb feat(profile): add round avatar with upload and cropping
- backend: user_avatar_objects binding (PG+SQLite), GC preserves avatar blobs,
  avatar service (EXIF-stripping WebP 128/512), public avatar read route
- web: avatar upload/crop on profile, round avatar in header/members/comments/author
- android: avatar upload/crop, round avatar on profile and albums header
- openspec: add-user-avatar proposal/design/specs/tasks
2026-10-12 16:16:47 +03:00

30 lines
1.3 KiB
Go

package auth
import (
"context"
"galo/internal/models"
)
// Repository is the persistence contract for the auth domain.
type Repository interface {
CreateUser(ctx context.Context, u *models.User) error
GetUserByEmail(ctx context.Context, email string) (*models.User, error)
GetUserByPhone(ctx context.Context, phone string) (*models.User, error)
GetUserByID(ctx context.Context, id string) (*models.User, error)
UpdateName(ctx context.Context, userID, name string) error
UpdatePasswordHash(ctx context.Context, userID, hash string) error
// AddIdentifier sets the missing email and/or phone of a user. The caller
// has already validated that only a missing identifier is provided.
AddIdentifier(ctx context.Context, userID, email, phone string) error
DeleteUser(ctx context.Context, userID string) error
UpdatePreferences(ctx context.Context, userID string, raw []byte) error
// SetAvatarURL stores the stable URL of the user's avatar; an empty value
// clears it.
SetAvatarURL(ctx context.Context, userID, url string) error
CreateRefreshToken(ctx context.Context, t *models.RefreshToken) error
GetRefreshToken(ctx context.Context, hash string) (*models.RefreshToken, error)
RevokeRefreshToken(ctx context.Context, id string) error
RevokeAllUserTokens(ctx context.Context, userID string) error
}