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 }