From eaae29e55e9db4edce96c2fc459c28396a48900f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Mon, 22 Dec 2025 14:17:01 +0100 Subject: [PATCH] Fix total count when only selected MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- pkg/server/api/connect/v1/v1_resolver.go | 35 +++++++++++++++++++----- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/pkg/server/api/connect/v1/v1_resolver.go b/pkg/server/api/connect/v1/v1_resolver.go index b06fe8949..4d3ff5b79 100644 --- a/pkg/server/api/connect/v1/v1_resolver.go +++ b/pkg/server/api/connect/v1/v1_resolver.go @@ -27,7 +27,10 @@ import ( // Memberships is the resolver for the memberships field. func (r *identityResolver) Memberships(ctx context.Context, obj *types.Identity, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MembershipOrderBy) (*types.MembershipConnection, error) { if gqlutils.OnlyTotalCountSelected(ctx) { - return &types.MembershipConnection{TotalCount: 0}, nil + return &types.MembershipConnection{ + Resolver: r, + ParentID: obj.ID, + }, nil } pageOrderBy := page.OrderBy[coredata.MembershipOrderField]{ @@ -55,7 +58,10 @@ func (r *identityResolver) Memberships(ctx context.Context, obj *types.Identity, // PendingInvitations is the resolver for the pendingInvitations field. func (r *identityResolver) PendingInvitations(ctx context.Context, obj *types.Identity, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.InvitationOrderBy) (*types.InvitationConnection, error) { if gqlutils.OnlyTotalCountSelected(ctx) { - return &types.InvitationConnection{TotalCount: 0}, nil + return &types.InvitationConnection{ + Resolver: r, + ParentID: obj.ID, + }, nil } pageOrderBy := page.OrderBy[coredata.InvitationOrderField]{ @@ -77,7 +83,10 @@ func (r *identityResolver) PendingInvitations(ctx context.Context, obj *types.Id // Sessions is the resolver for the sessions field. func (r *identityResolver) Sessions(ctx context.Context, obj *types.Identity, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.SessionOrder) (*types.SessionConnection, error) { if gqlutils.OnlyTotalCountSelected(ctx) { - return &types.SessionConnection{TotalCount: 0}, nil + return &types.SessionConnection{ + Resolver: r, + ParentID: obj.ID, + }, nil } pageOrderBy := page.OrderBy[coredata.SessionOrderField]{ @@ -105,7 +114,10 @@ func (r *identityResolver) Sessions(ctx context.Context, obj *types.Identity, fi // PersonalAPIKeys is the resolver for the personalAPIKeys field. func (r *identityResolver) PersonalAPIKeys(ctx context.Context, obj *types.Identity, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.PersonalAPIKeyConnection, error) { if gqlutils.OnlyTotalCountSelected(ctx) { - return &types.PersonalAPIKeyConnection{TotalCount: 0}, nil + return &types.PersonalAPIKeyConnection{ + Resolver: r, + ParentID: obj.ID, + }, nil } pageOrderBy := page.OrderBy[coredata.PersonalAPIKeyOrderField]{ @@ -941,7 +953,10 @@ func (r *organizationResolver) HorizontalLogoURL(ctx context.Context, obj *types // Members is the resolver for the members field. func (r *organizationResolver) Members(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.MembershipOrderBy) (*types.MembershipConnection, error) { if gqlutils.OnlyTotalCountSelected(ctx) { - return &types.MembershipConnection{TotalCount: 0}, nil + return &types.MembershipConnection{ + Resolver: r, + ParentID: obj.ID, + }, nil } pageOrderBy := page.OrderBy[coredata.MembershipOrderField]{ @@ -967,7 +982,10 @@ func (r *organizationResolver) Members(ctx context.Context, obj *types.Organizat // Invitations is the resolver for the invitations field. func (r *organizationResolver) Invitations(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey, status *coredata.InvitationStatus) (*types.InvitationConnection, error) { if gqlutils.OnlyTotalCountSelected(ctx) { - return &types.InvitationConnection{TotalCount: 0}, nil + return &types.InvitationConnection{ + Resolver: r, + ParentID: obj.ID, + }, nil } pageOrderBy := page.OrderBy[coredata.InvitationOrderField]{ @@ -994,7 +1012,10 @@ func (r *organizationResolver) Invitations(ctx context.Context, obj *types.Organ // SamlConfigurations is the resolver for the samlConfigurations field. func (r *organizationResolver) SamlConfigurations(ctx context.Context, obj *types.Organization, first *int, after *page.CursorKey, last *int, before *page.CursorKey) (*types.SAMLConfigurationConnection, error) { if gqlutils.OnlyTotalCountSelected(ctx) { - return &types.SAMLConfigurationConnection{TotalCount: 0}, nil + return &types.SAMLConfigurationConnection{ + Resolver: r, + ParentID: obj.ID, + }, nil } pageOrderBy := page.OrderBy[coredata.SAMLConfigurationOrderField]{