38 lines
1.3 KiB
Go
38 lines
1.3 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gateway/internal/model/member/domain/entity"
|
|
"gateway/internal/model/member/domain/enum"
|
|
)
|
|
|
|
// MemberUpdate carries mutable profile fields for PATCH-style updates.
|
|
type MemberUpdate struct {
|
|
DisplayName *string
|
|
Avatar *string
|
|
Language *string
|
|
Currency *string
|
|
Phone *string
|
|
}
|
|
|
|
// ListMembersFilter scopes a paginated member list query.
|
|
type ListMembersFilter struct {
|
|
TenantID string
|
|
Status enum.MemberStatus
|
|
Offset int64
|
|
Limit int64
|
|
}
|
|
|
|
// MemberRepository persists member profiles (Mongo).
|
|
type MemberRepository interface {
|
|
Insert(ctx context.Context, member *entity.Member) error
|
|
GetByUID(ctx context.Context, tenantID, uid string) (*entity.Member, error)
|
|
GetByZitadelUserID(ctx context.Context, tenantID, zitadelUserID string) (*entity.Member, error)
|
|
UpdateProfile(ctx context.Context, tenantID, uid string, update *MemberUpdate) (*entity.Member, error)
|
|
UpdateStatus(ctx context.Context, tenantID, uid string, status enum.MemberStatus, suspendReason string) error
|
|
List(ctx context.Context, filter ListMembersFilter) ([]*entity.Member, int64, error)
|
|
SetBusinessEmailVerified(ctx context.Context, tenantID, uid, email string) error
|
|
SetBusinessPhoneVerified(ctx context.Context, tenantID, uid, phone string) error
|
|
}
|