package iam import ( "context" "errors" "atlas9.dev/c/core" ) var ErrCannotRemovePersonalTenantOwner = errors.New("cannot remove owner from personal tenant") type MemberStatus string const ( MemberInvited MemberStatus = "invited" MemberActive MemberStatus = "active" ) type TenantMember struct { TenantID core.ID UserID core.ID Status MemberStatus } type TenantMemberStore interface { Add(ctx context.Context, tenantID core.ID, userID core.ID, status MemberStatus) error SetStatus(ctx context.Context, tenantID core.ID, userID core.ID, status MemberStatus) error Remove(ctx context.Context, tenantID core.ID, userID core.ID) error Get(ctx context.Context, tenantID core.ID, userID core.ID) (*TenantMember, error) ListByTenant(ctx context.Context, tenantID core.ID, page core.PageReq) (core.Page[TenantMember], error) ListByUser(ctx context.Context, userID core.ID, page core.PageReq) (core.Page[TenantMember], error) }