From 887d39144b6df0f6835cdef2a28706890a4a1bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Mon, 19 Jan 2026 17:37:15 +0400 Subject: [PATCH] Order membership by organization name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- CHANGELOG.md | 1 + ...MemberListFragment_RefetchQuery.graphql.ts | 4 +- .../MembershipsDropdownMenuQuery.graphql.ts | 16 +-- .../iam/MembershipsPageQuery.graphql.ts | 130 ++++++++++-------- .../pages/iam/memberships/MembershipsPage.tsx | 5 +- .../_components/MembershipsDropdownMenu.tsx | 6 +- pkg/coredata/membership.go | 38 +++-- pkg/coredata/membership_order_field.go | 11 +- pkg/server/api/connect/v1/schema.graphql | 4 + pkg/server/api/connect/v1/schema/schema.go | 22 +-- 10 files changed, 144 insertions(+), 93 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56d5f8716..8af15906e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Membership Profile authz done from membership in membershipResolver (it's a 1:1 association) - Match keycloak URL ports with default base URL one for local dev - Drop the authentication dialog in favor of a dedicated auth page for compliance page +- Order memberships by organization name on console / and memberships dropdown ### Fixed diff --git a/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts b/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts index e137bee8b..229d46acd 100644 --- a/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/MemberListFragment_RefetchQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<7759f335d6dd4b9ca6afbb601aa7794c>> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -10,7 +10,7 @@ import { ConcreteRequest } from 'relay-runtime'; import { FragmentRefs } from "relay-runtime"; -export type MembershipOrderField = "CREATED_AT" | "EMAIL_ADDRESS" | "FULL_NAME" | "ROLE"; +export type MembershipOrderField = "CREATED_AT" | "EMAIL_ADDRESS" | "FULL_NAME" | "ORGANIZATION_NAME" | "ROLE"; export type OrderDirection = "ASC" | "DESC"; export type MembershipOrder = { direction: OrderDirection; diff --git a/apps/console/src/__generated__/iam/MembershipsDropdownMenuQuery.graphql.ts b/apps/console/src/__generated__/iam/MembershipsDropdownMenuQuery.graphql.ts index f99afb41c..2e89a6b32 100644 --- a/apps/console/src/__generated__/iam/MembershipsDropdownMenuQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/MembershipsDropdownMenuQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<> + * @generated SignedSource<> * @lightSyntaxTransform * @nogrep */ @@ -42,8 +42,8 @@ var v0 = [ "kind": "Literal", "name": "orderBy", "value": { - "direction": "DESC", - "field": "CREATED_AT" + "direction": "ASC", + "field": "ORGANIZATION_NAME" } } ], @@ -141,7 +141,7 @@ return { "action": "THROW" } ], - "storageKey": "memberships(first:1000,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" + "storageKey": "memberships(first:1000,orderBy:{\"direction\":\"ASC\",\"field\":\"ORGANIZATION_NAME\"})" }, "action": "THROW" } @@ -239,7 +239,7 @@ return { "storageKey": null } ], - "storageKey": "memberships(first:1000,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" + "storageKey": "memberships(first:1000,orderBy:{\"direction\":\"ASC\",\"field\":\"ORGANIZATION_NAME\"})" }, (v1/*: any*/) ], @@ -248,16 +248,16 @@ return { ] }, "params": { - "cacheID": "edb71632c35f1f8aefa1bb426c81a985", + "cacheID": "9295fb9d95666f4b397645e143b7e774", "id": null, "metadata": {}, "name": "MembershipsDropdownMenuQuery", "operationKind": "query", - "text": "query MembershipsDropdownMenuQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n organization {\n name\n id\n }\n ...MembershipsDropdownMenuItemFragment\n }\n }\n }\n id\n }\n}\n\nfragment MembershipsDropdownMenuItemFragment on Membership {\n id\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n logoUrl\n name\n }\n}\n" + "text": "query MembershipsDropdownMenuQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: ASC, field: ORGANIZATION_NAME}) {\n edges {\n node {\n id\n organization {\n name\n id\n }\n ...MembershipsDropdownMenuItemFragment\n }\n }\n }\n id\n }\n}\n\nfragment MembershipsDropdownMenuItemFragment on Membership {\n id\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n logoUrl\n name\n }\n}\n" } }; })(); -(node as any).hash = "aa787b33a7cb3046d30fd638f4850621"; +(node as any).hash = "cd47570a10588c0e1c68240817141fd8"; export default node; diff --git a/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts b/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts index 7aba165fd..7a7401ace 100644 --- a/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts +++ b/apps/console/src/__generated__/iam/MembershipsPageQuery.graphql.ts @@ -1,5 +1,5 @@ /** - * @generated SignedSource<<1d247c2fede04c2292000421a9e49fa8>> + * @generated SignedSource<<3a268aba389df25968eb44b454150288>> * @lightSyntaxTransform * @nogrep */ @@ -46,42 +46,39 @@ var v0 = { "kind": "Literal", "name": "orderBy", "value": { - "direction": "DESC", - "field": "CREATED_AT" + "direction": "ASC", + "field": "ORGANIZATION_NAME" } }, -v1 = [ - (v0/*: any*/) -], -v2 = { +v1 = { "alias": null, "args": null, "kind": "ScalarField", "name": "id", "storageKey": null }, -v3 = { +v2 = { "alias": null, "args": null, "kind": "ScalarField", "name": "name", "storageKey": null }, -v4 = { +v3 = { "alias": null, "args": null, "kind": "ScalarField", "name": "__typename", "storageKey": null }, -v5 = { +v4 = { "alias": null, "args": null, "kind": "ScalarField", "name": "cursor", "storageKey": null }, -v6 = { +v5 = { "alias": null, "args": null, "concreteType": "PageInfo", @@ -106,7 +103,7 @@ v6 = { ], "storageKey": null }, -v7 = { +v6 = { "kind": "ClientExtension", "selections": [ { @@ -118,16 +115,29 @@ v7 = { } ] }, -v8 = [ - { - "kind": "Literal", - "name": "first", - "value": 1000 - }, +v7 = { + "kind": "Literal", + "name": "orderBy", + "value": { + "direction": "DESC", + "field": "CREATED_AT" + } +}, +v8 = { + "kind": "Literal", + "name": "first", + "value": 1000 +}, +v9 = [ + (v8/*: any*/), (v0/*: any*/) ], -v9 = [ +v10 = [ "orderBy" +], +v11 = [ + (v8/*: any*/), + (v7/*: any*/) ]; return { "fragment": { @@ -150,7 +160,9 @@ return { "kind": "RequiredField", "field": { "alias": "memberships", - "args": (v1/*: any*/), + "args": [ + (v0/*: any*/) + ], "concreteType": "MembershipConnection", "kind": "LinkedField", "name": "__MembershipsPage_memberships_connection", @@ -174,7 +186,7 @@ return { "name": "node", "plural": false, "selections": [ - (v2/*: any*/), + (v1/*: any*/), { "args": null, "kind": "FragmentSpread", @@ -190,26 +202,26 @@ return { "name": "organization", "plural": false, "selections": [ - (v3/*: any*/) + (v2/*: any*/) ], "storageKey": null }, "action": "THROW" }, - (v4/*: any*/) + (v3/*: any*/) ], "storageKey": null }, - (v5/*: any*/) + (v4/*: any*/) ], "storageKey": null }, "action": "THROW" }, - (v6/*: any*/), - (v7/*: any*/) + (v5/*: any*/), + (v6/*: any*/) ], - "storageKey": "__MembershipsPage_memberships_connection(orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" + "storageKey": "__MembershipsPage_memberships_connection(orderBy:{\"direction\":\"ASC\",\"field\":\"ORGANIZATION_NAME\"})" }, "action": "THROW" }, @@ -217,7 +229,9 @@ return { "kind": "RequiredField", "field": { "alias": "pendingInvitations", - "args": (v1/*: any*/), + "args": [ + (v7/*: any*/) + ], "concreteType": "InvitationConnection", "kind": "LinkedField", "name": "__MembershipsPage_pendingInvitations_connection", @@ -241,24 +255,24 @@ return { "name": "node", "plural": false, "selections": [ - (v2/*: any*/), + (v1/*: any*/), { "args": null, "kind": "FragmentSpread", "name": "InvitationCardFragment" }, - (v4/*: any*/) + (v3/*: any*/) ], "storageKey": null }, - (v5/*: any*/) + (v4/*: any*/) ], "storageKey": null }, "action": "THROW" }, - (v6/*: any*/), - (v7/*: any*/) + (v5/*: any*/), + (v6/*: any*/) ], "storageKey": "__MembershipsPage_pendingInvitations_connection(orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" }, @@ -289,7 +303,7 @@ return { "selections": [ { "alias": null, - "args": (v8/*: any*/), + "args": (v9/*: any*/), "concreteType": "MembershipConnection", "kind": "LinkedField", "name": "memberships", @@ -311,7 +325,7 @@ return { "name": "node", "plural": false, "selections": [ - (v2/*: any*/), + (v1/*: any*/), { "alias": null, "args": null, @@ -320,7 +334,7 @@ return { "name": "lastSession", "plural": false, "selections": [ - (v2/*: any*/), + (v1/*: any*/), { "alias": null, "args": null, @@ -339,8 +353,8 @@ return { "name": "organization", "plural": false, "selections": [ + (v1/*: any*/), (v2/*: any*/), - (v3/*: any*/), { "alias": null, "args": null, @@ -351,23 +365,23 @@ return { ], "storageKey": null }, - (v4/*: any*/) + (v3/*: any*/) ], "storageKey": null }, - (v5/*: any*/) + (v4/*: any*/) ], "storageKey": null }, - (v6/*: any*/), - (v7/*: any*/) + (v5/*: any*/), + (v6/*: any*/) ], - "storageKey": "memberships(first:1000,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" + "storageKey": "memberships(first:1000,orderBy:{\"direction\":\"ASC\",\"field\":\"ORGANIZATION_NAME\"})" }, { "alias": null, - "args": (v8/*: any*/), - "filters": (v9/*: any*/), + "args": (v9/*: any*/), + "filters": (v10/*: any*/), "handle": "connection", "key": "MembershipsPage_memberships", "kind": "LinkedHandle", @@ -375,7 +389,7 @@ return { }, { "alias": null, - "args": (v8/*: any*/), + "args": (v11/*: any*/), "concreteType": "InvitationConnection", "kind": "LinkedField", "name": "pendingInvitations", @@ -397,7 +411,7 @@ return { "name": "node", "plural": false, "selections": [ - (v2/*: any*/), + (v1/*: any*/), { "alias": null, "args": null, @@ -420,41 +434,41 @@ return { "name": "organization", "plural": false, "selections": [ - (v2/*: any*/), - (v3/*: any*/) + (v1/*: any*/), + (v2/*: any*/) ], "storageKey": null }, - (v4/*: any*/) + (v3/*: any*/) ], "storageKey": null }, - (v5/*: any*/) + (v4/*: any*/) ], "storageKey": null }, - (v6/*: any*/), - (v7/*: any*/) + (v5/*: any*/), + (v6/*: any*/) ], "storageKey": "pendingInvitations(first:1000,orderBy:{\"direction\":\"DESC\",\"field\":\"CREATED_AT\"})" }, { "alias": null, - "args": (v8/*: any*/), - "filters": (v9/*: any*/), + "args": (v11/*: any*/), + "filters": (v10/*: any*/), "handle": "connection", "key": "MembershipsPage_pendingInvitations", "kind": "LinkedHandle", "name": "pendingInvitations" }, - (v2/*: any*/) + (v1/*: any*/) ], "storageKey": null } ] }, "params": { - "cacheID": "a3dc3f3e775fa02b7d181fa57ade06b9", + "cacheID": "9807cdf4aa713babb1639e4effd96e54", "id": null, "metadata": { "connection": [ @@ -480,11 +494,11 @@ return { }, "name": "MembershipsPageQuery", "operationKind": "query", - "text": "query MembershipsPageQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...MembershipCardFragment\n organization {\n name\n id\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n pendingInvitations(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...InvitationCardFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n id\n }\n}\n\nfragment InvitationCardFragment on Invitation {\n id\n role\n createdAt\n organization {\n id\n name\n }\n}\n\nfragment MembershipCardFragment on Membership {\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n name\n logoUrl\n }\n}\n" + "text": "query MembershipsPageQuery {\n viewer {\n memberships(first: 1000, orderBy: {direction: ASC, field: ORGANIZATION_NAME}) {\n edges {\n node {\n id\n ...MembershipCardFragment\n organization {\n name\n id\n }\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n pendingInvitations(first: 1000, orderBy: {direction: DESC, field: CREATED_AT}) {\n edges {\n node {\n id\n ...InvitationCardFragment\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n id\n }\n}\n\nfragment InvitationCardFragment on Invitation {\n id\n role\n createdAt\n organization {\n id\n name\n }\n}\n\nfragment MembershipCardFragment on Membership {\n lastSession {\n id\n expiresAt\n }\n organization {\n id\n name\n logoUrl\n }\n}\n" } }; })(); -(node as any).hash = "b21b9cae0ab7a4afdf12fb6ae516b64e"; +(node as any).hash = "7956b20535004550c271e1a520c95fe4"; export default node; diff --git a/apps/console/src/pages/iam/memberships/MembershipsPage.tsx b/apps/console/src/pages/iam/memberships/MembershipsPage.tsx index c010ea1af..f51262f81 100644 --- a/apps/console/src/pages/iam/memberships/MembershipsPage.tsx +++ b/apps/console/src/pages/iam/memberships/MembershipsPage.tsx @@ -16,7 +16,10 @@ import { usePageTitle } from "@probo/hooks"; export const membershipsPageQuery = graphql` query MembershipsPageQuery { viewer @required(action: THROW) { - memberships(first: 1000, orderBy: { direction: DESC, field: CREATED_AT }) + memberships( + first: 1000 + orderBy: { direction: ASC, field: ORGANIZATION_NAME } + ) @connection(key: "MembershipsPage_memberships") @required(action: THROW) { __id diff --git a/apps/console/src/pages/iam/organizations/_components/MembershipsDropdownMenu.tsx b/apps/console/src/pages/iam/organizations/_components/MembershipsDropdownMenu.tsx index f23c54bb4..3c8a791a0 100644 --- a/apps/console/src/pages/iam/organizations/_components/MembershipsDropdownMenu.tsx +++ b/apps/console/src/pages/iam/organizations/_components/MembershipsDropdownMenu.tsx @@ -6,8 +6,10 @@ import { MembershipsDropdownMenuItem } from "./MembershipsDropdownMenuItem"; export const membershipsDropdownMenuQuery = graphql` query MembershipsDropdownMenuQuery { viewer @required(action: THROW) { - memberships(first: 1000, orderBy: { direction: DESC, field: CREATED_AT }) - @required(action: THROW) { + memberships( + first: 1000 + orderBy: { direction: ASC, field: ORGANIZATION_NAME } + ) @required(action: THROW) { edges @required(action: THROW) { node @required(action: THROW) { id diff --git a/pkg/coredata/membership.go b/pkg/coredata/membership.go index 04d91e1f2..28dd71962 100644 --- a/pkg/coredata/membership.go +++ b/pkg/coredata/membership.go @@ -31,16 +31,17 @@ import ( type ( Membership struct { - ID gid.GID `db:"id"` - IdentityID gid.GID `db:"identity_id"` - OrganizationID gid.GID `db:"organization_id"` - Role MembershipRole `db:"role"` - Source MembershipSource `db:"source"` - State MembershipState `db:"state"` - FullName string `db:"full_name"` - EmailAddress mail.Addr `db:"email_address"` - CreatedAt time.Time `db:"created_at"` - UpdatedAt time.Time `db:"updated_at"` + ID gid.GID `db:"id"` + IdentityID gid.GID `db:"identity_id"` + OrganizationID gid.GID `db:"organization_id"` + Role MembershipRole `db:"role"` + Source MembershipSource `db:"source"` + State MembershipState `db:"state"` + FullName string `db:"full_name"` + EmailAddress mail.Addr `db:"email_address"` + OrganizationName string `db:"organization_name"` + CreatedAt time.Time `db:"created_at"` + UpdatedAt time.Time `db:"updated_at"` } Memberships []*Membership @@ -48,6 +49,8 @@ type ( func (m Membership) CursorKey(orderBy MembershipOrderField) page.CursorKey { switch orderBy { + case MembershipOrderFieldOrganizationName: + return page.NewCursorKey(m.ID, m.OrganizationName) case MembershipOrderFieldFullName: return page.NewCursorKey(m.ID, m.FullName) case MembershipOrderFieldEmailAddress: @@ -88,11 +91,13 @@ SELECT mbr.state, COALESCE(mp.full_name, i.full_name, '') as full_name, i.email_address, + o.name AS organization_name, mbr.created_at, mbr.updated_at FROM mbr JOIN identities i ON mbr.identity_id = i.id +JOIN organizations o ON mbr.organization_id = o.id LEFT JOIN iam_membership_profiles mp ON mp.membership_id = mbr.id ` @@ -207,12 +212,15 @@ SELECT mbr.state, COALESCE(mp.full_name, i.full_name, '') as full_name, i.email_address, + o.name as organization_name, mbr.created_at, mbr.updated_at FROM mbr JOIN identities i ON mbr.identity_id = i.id +JOIN + organizations o ON mbr.organization_id = o.id LEFT JOIN iam_membership_profiles mp ON mp.membership_id = mbr.id ` @@ -314,12 +322,15 @@ SELECT mbr.state, COALESCE(mp.full_name, i.full_name, '') as full_name, i.email_address, + o.name as organization_name, mbr.created_at, mbr.updated_at FROM mbr JOIN identities i ON mbr.identity_id = i.id +JOIN + organizations o ON mbr.organization_id = o.id LEFT JOIN iam_membership_profiles mp ON mp.membership_id = mbr.id ` @@ -451,12 +462,15 @@ SELECT mbr.state, COALESCE(mp.full_name, i.full_name, '') as full_name, i.email_address, + o.name as organization_name, mbr.created_at, mbr.updated_at FROM mbr JOIN identities i ON mbr.identity_id = i.id +JOIN + organizations o ON mbr.organization_id = o.id LEFT JOIN iam_membership_profiles mp ON mp.membership_id = mbr.id WHERE @@ -504,12 +518,15 @@ WITH membership_with_profile AS ( m.state, COALESCE(mp.full_name, i.full_name, '') AS full_name, i.email_address, + o.name as organization_name, m.created_at, m.updated_at FROM iam_memberships m JOIN identities i ON m.identity_id = i.id + JOIN + organizations o ON mbr.organization_id = o.id LEFT JOIN iam_membership_profiles mp ON mp.membership_id = m.id WHERE @@ -632,6 +649,7 @@ SELECT state, '' as full_name, NULL as email_address, + '' as organization_name, created_at, updated_at FROM diff --git a/pkg/coredata/membership_order_field.go b/pkg/coredata/membership_order_field.go index 334be5eb9..283e3681e 100644 --- a/pkg/coredata/membership_order_field.go +++ b/pkg/coredata/membership_order_field.go @@ -19,14 +19,17 @@ type ( ) const ( - MembershipOrderFieldFullName MembershipOrderField = "FULL_NAME" - MembershipOrderFieldEmailAddress MembershipOrderField = "EMAIL_ADDRESS" - MembershipOrderFieldRole MembershipOrderField = "ROLE" - MembershipOrderFieldCreatedAt MembershipOrderField = "CREATED_AT" + MembershipOrderFieldOrganizationName MembershipOrderField = "ORGANIZATION_NAME" + MembershipOrderFieldFullName MembershipOrderField = "FULL_NAME" + MembershipOrderFieldEmailAddress MembershipOrderField = "EMAIL_ADDRESS" + MembershipOrderFieldRole MembershipOrderField = "ROLE" + MembershipOrderFieldCreatedAt MembershipOrderField = "CREATED_AT" ) func (p MembershipOrderField) Column() string { switch p { + case MembershipOrderFieldOrganizationName: + return "organization_name" case MembershipOrderFieldFullName: return "full_name" case MembershipOrderFieldEmailAddress: diff --git a/pkg/server/api/connect/v1/schema.graphql b/pkg/server/api/connect/v1/schema.graphql index 139ee8bf6..aa12d3425 100644 --- a/pkg/server/api/connect/v1/schema.graphql +++ b/pkg/server/api/connect/v1/schema.graphql @@ -412,6 +412,10 @@ enum MembershipOrderField @goEnum( value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldFullName" ) + ORGANIZATION_NAME + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldOrganizationName" + ) EMAIL_ADDRESS @goEnum( value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldEmailAddress" diff --git a/pkg/server/api/connect/v1/schema/schema.go b/pkg/server/api/connect/v1/schema/schema.go index b37c45c57..18749a9a1 100644 --- a/pkg/server/api/connect/v1/schema/schema.go +++ b/pkg/server/api/connect/v1/schema/schema.go @@ -2687,6 +2687,10 @@ enum MembershipOrderField @goEnum( value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldFullName" ) + ORGANIZATION_NAME + @goEnum( + value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldOrganizationName" + ) EMAIL_ADDRESS @goEnum( value: "go.probo.inc/probo/pkg/coredata.MembershipOrderFieldEmailAddress" @@ -20088,16 +20092,18 @@ func (ec *executionContext) marshalNMembershipOrderField2goᚗproboᚗincᚋprob var ( unmarshalNMembershipOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐMembershipOrderField = map[string]coredata.MembershipOrderField{ - "FULL_NAME": coredata.MembershipOrderFieldFullName, - "EMAIL_ADDRESS": coredata.MembershipOrderFieldEmailAddress, - "ROLE": coredata.MembershipOrderFieldRole, - "CREATED_AT": coredata.MembershipOrderFieldCreatedAt, + "FULL_NAME": coredata.MembershipOrderFieldFullName, + "ORGANIZATION_NAME": coredata.MembershipOrderFieldOrganizationName, + "EMAIL_ADDRESS": coredata.MembershipOrderFieldEmailAddress, + "ROLE": coredata.MembershipOrderFieldRole, + "CREATED_AT": coredata.MembershipOrderFieldCreatedAt, } marshalNMembershipOrderField2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐMembershipOrderField = map[coredata.MembershipOrderField]string{ - coredata.MembershipOrderFieldFullName: "FULL_NAME", - coredata.MembershipOrderFieldEmailAddress: "EMAIL_ADDRESS", - coredata.MembershipOrderFieldRole: "ROLE", - coredata.MembershipOrderFieldCreatedAt: "CREATED_AT", + coredata.MembershipOrderFieldFullName: "FULL_NAME", + coredata.MembershipOrderFieldOrganizationName: "ORGANIZATION_NAME", + coredata.MembershipOrderFieldEmailAddress: "EMAIL_ADDRESS", + coredata.MembershipOrderFieldRole: "ROLE", + coredata.MembershipOrderFieldCreatedAt: "CREATED_AT", } )