From 8b6e9e420aef447e1dfb32e0b99965a2c259a87e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 28 May 2026 18:50:43 +0000 Subject: [PATCH] Allow ordering profiles by email address GraphQL profile ordering rejected EMAIL_ADDRESS because ProfileOrderField did not expose this enum value in connect and console schemas. Add EMAIL_ADDRESS to MembershipProfileOrderField and its validation list so order input coercion accepts the value consistently. Extend MembershipProfile cursor key encoding to support email ordering and avoid runtime panics during pagination. Update the MCP profile order enum to keep API surface definitions aligned with the same ordering capability. Signed-off-by: Cursor Agent Co-authored-by: Bryan FRIMIN --- pkg/coredata/membership_profile.go | 2 ++ pkg/coredata/membership_profile_order_field.go | 3 +++ pkg/server/api/connect/v1/graphql/profile.graphql | 4 ++++ pkg/server/api/console/v1/graphql/organization.graphql | 4 ++++ pkg/server/api/mcp/v1/specification.yaml | 1 + 5 files changed, 14 insertions(+) diff --git a/pkg/coredata/membership_profile.go b/pkg/coredata/membership_profile.go index 56891965d..345bdc61b 100644 --- a/pkg/coredata/membership_profile.go +++ b/pkg/coredata/membership_profile.go @@ -77,6 +77,8 @@ func (p MembershipProfile) CursorKey(orderBy MembershipProfileOrderField) page.C return page.NewCursorKey(p.ID, p.CreatedAt) case MembershipProfileOrderFieldFullName: return page.NewCursorKey(p.ID, p.FullName) + case MembershipProfileOrderFieldEmailAddress: + return page.NewCursorKey(p.ID, p.EmailAddress) case MembershipProfileOrderFieldKind: return page.NewCursorKey(p.ID, p.Kind) case MembershipProfileOrderFieldOrganizationName: diff --git a/pkg/coredata/membership_profile_order_field.go b/pkg/coredata/membership_profile_order_field.go index 2f11f48f2..728650f80 100644 --- a/pkg/coredata/membership_profile_order_field.go +++ b/pkg/coredata/membership_profile_order_field.go @@ -28,6 +28,7 @@ type ( const ( MembershipProfileOrderFieldCreatedAt MembershipProfileOrderField = "CREATED_AT" MembershipProfileOrderFieldFullName MembershipProfileOrderField = "FULL_NAME" + MembershipProfileOrderFieldEmailAddress MembershipProfileOrderField = "EMAIL_ADDRESS" MembershipProfileOrderFieldKind MembershipProfileOrderField = "KIND" MembershipProfileOrderFieldOrganizationName MembershipProfileOrderField = "ORGANIZATION_NAME" MembershipProfileOrderFieldState MembershipProfileOrderField = "STATE" @@ -44,6 +45,7 @@ func MembershipProfileOrderFields() []MembershipProfileOrderField { return []MembershipProfileOrderField{ MembershipProfileOrderFieldCreatedAt, MembershipProfileOrderFieldFullName, + MembershipProfileOrderFieldEmailAddress, MembershipProfileOrderFieldKind, MembershipProfileOrderFieldOrganizationName, MembershipProfileOrderFieldState, @@ -55,6 +57,7 @@ func (v MembershipProfileOrderField) IsValid() bool { case MembershipProfileOrderFieldCreatedAt, MembershipProfileOrderFieldFullName, + MembershipProfileOrderFieldEmailAddress, MembershipProfileOrderFieldKind, MembershipProfileOrderFieldOrganizationName, MembershipProfileOrderFieldState: diff --git a/pkg/server/api/connect/v1/graphql/profile.graphql b/pkg/server/api/connect/v1/graphql/profile.graphql index 522412ee6..59c79b50f 100644 --- a/pkg/server/api/connect/v1/graphql/profile.graphql +++ b/pkg/server/api/connect/v1/graphql/profile.graphql @@ -53,6 +53,10 @@ enum ProfileOrderField @goEnum( value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldCreatedAt" ) + EMAIL_ADDRESS + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldEmailAddress" + ) KIND @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldKind") ORGANIZATION_NAME @goEnum( diff --git a/pkg/server/api/console/v1/graphql/organization.graphql b/pkg/server/api/console/v1/graphql/organization.graphql index 3cee21148..2ab7003a7 100644 --- a/pkg/server/api/console/v1/graphql/organization.graphql +++ b/pkg/server/api/console/v1/graphql/organization.graphql @@ -40,6 +40,10 @@ enum ProfileOrderField @goEnum( value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldCreatedAt" ) + EMAIL_ADDRESS + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldEmailAddress" + ) KIND @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldKind") } diff --git a/pkg/server/api/mcp/v1/specification.yaml b/pkg/server/api/mcp/v1/specification.yaml index 67e8abec2..e2b4d6d78 100644 --- a/pkg/server/api/mcp/v1/specification.yaml +++ b/pkg/server/api/mcp/v1/specification.yaml @@ -167,6 +167,7 @@ components: enum: - CREATED_AT - FULL_NAME + - EMAIL_ADDRESS - KIND go.probo.inc/mcpgen/type: go.probo.inc/probo/pkg/coredata.MembershipProfileOrderField