Enhance people

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-08-12 10:29:13 +02:00
parent 6eb9a39c17
commit d65bc5f7e2
23 changed files with 430 additions and 118 deletions

View File

@@ -16,10 +16,10 @@ import { promisifyMutation, sprintf } from "@probo/helpers";
import { useTranslate } from "@probo/i18n";
const peopleQuery = graphql`
query PeopleGraphQuery($organizationId: ID!) {
query PeopleGraphQuery($organizationId: ID!, $filter: PeopleFilter) {
organization: node(id: $organizationId) {
... on Organization {
peoples(first: 100, orderBy: { direction: ASC, field: CREATED_AT }) {
peoples(first: 100, orderBy: { direction: ASC, field: FULL_NAME }, filter: $filter) {
edges {
node {
id
@@ -36,10 +36,15 @@ const peopleQuery = graphql`
/**
* Return a list of people (used for people selectors)
*/
export function usePeople(organizationId: string) {
const data = useLazyLoadQuery<PeopleGraphQuery>(peopleQuery, {
organizationId: organizationId,
});
export function usePeople(organizationId: string, { excludeContractEnded }: { excludeContractEnded?: boolean } = {}) {
const data = useLazyLoadQuery<PeopleGraphQuery>(
peopleQuery,
{
organizationId: organizationId,
filter: excludeContractEnded ? { excludeContractEnded: true } : null,
},
{ fetchPolicy: "network-only" }
);
return useMemo(() => {
return data.organization?.peoples?.edges.map((edge) => edge.node) ?? [];
}, [data]);
@@ -61,7 +66,8 @@ export const paginatedPeopleFragment = graphql`
@refetchable(queryName: "PeopleListQuery")
@argumentDefinitions(
first: { type: "Int", defaultValue: 50 }
order: { type: "PeopleOrder", defaultValue: null }
order: { type: "PeopleOrder", defaultValue: { direction: ASC, field: FULL_NAME } }
filter: { type: "PeopleFilter", defaultValue: null }
after: { type: "CursorKey", defaultValue: null }
before: { type: "CursorKey", defaultValue: null }
last: { type: "Int", defaultValue: null }
@@ -72,6 +78,7 @@ export const paginatedPeopleFragment = graphql`
last: $last
before: $before
orderBy: $order
filter: $filter
) @connection(key: "PeopleGraphPaginatedQuery_peoples") {
__id
edges {
@@ -82,6 +89,8 @@ export const paginatedPeopleFragment = graphql`
kind
position
additionalEmailAddresses
contractStartDate
contractEndDate
}
}
}
@@ -161,6 +170,8 @@ export const peopleNodeQuery = graphql`
position
kind
additionalEmailAddresses
contractStartDate
contractEndDate
}
}
}
@@ -176,6 +187,8 @@ export const updatePeopleMutation = graphql`
position
kind
additionalEmailAddresses
contractStartDate
contractEndDate
}
}
}

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<71df408810680ded020fb0e1cc93ff79>>
* @generated SignedSource<<e263259b92f7b1fe14bca5fca49b20bf>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -16,6 +16,8 @@ export type PeopleGraphNodeQuery$variables = {
export type PeopleGraphNodeQuery$data = {
readonly node: {
readonly additionalEmailAddresses?: ReadonlyArray<string>;
readonly contractEndDate?: any | null | undefined;
readonly contractStartDate?: any | null | undefined;
readonly fullName?: string;
readonly id?: string;
readonly kind?: PeopleKind;
@@ -84,6 +86,20 @@ v7 = {
"kind": "ScalarField",
"name": "additionalEmailAddresses",
"storageKey": null
},
v8 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
v9 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
};
return {
"fragment": {
@@ -108,7 +124,9 @@ return {
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/)
(v7/*: any*/),
(v8/*: any*/),
(v9/*: any*/)
],
"type": "People",
"abstractKey": null
@@ -149,7 +167,9 @@ return {
(v4/*: any*/),
(v5/*: any*/),
(v6/*: any*/),
(v7/*: any*/)
(v7/*: any*/),
(v8/*: any*/),
(v9/*: any*/)
],
"type": "People",
"abstractKey": null
@@ -160,16 +180,16 @@ return {
]
},
"params": {
"cacheID": "850de97d42fdda9d2335c0e5219fd067",
"cacheID": "096d011a1e9a7374a13d037738b46fc6",
"id": null,
"metadata": {},
"name": "PeopleGraphNodeQuery",
"operationKind": "query",
"text": "query PeopleGraphNodeQuery(\n $peopleId: ID!\n) {\n node(id: $peopleId) {\n __typename\n ... on People {\n id\n fullName\n primaryEmailAddress\n position\n kind\n additionalEmailAddresses\n }\n id\n }\n}\n"
"text": "query PeopleGraphNodeQuery(\n $peopleId: ID!\n) {\n node(id: $peopleId) {\n __typename\n ... on People {\n id\n fullName\n primaryEmailAddress\n position\n kind\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n }\n id\n }\n}\n"
}
};
})();
(node as any).hash = "f39d45664dba2b3bcdad07ef8baebfe9";
(node as any).hash = "af18ca63be219f85baa39bf99294b4f6";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<5eba326084bfab4966727af60e2aa85c>>
* @generated SignedSource<<940911e0b7ae1ffe53a31f98216dcfe6>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -18,6 +18,8 @@ export type PeopleGraphPaginatedFragment$data = {
readonly edges: ReadonlyArray<{
readonly node: {
readonly additionalEmailAddresses: ReadonlyArray<string>;
readonly contractEndDate: any | null | undefined;
readonly contractStartDate: any | null | undefined;
readonly fullName: string;
readonly id: string;
readonly kind: PeopleKind;
@@ -58,6 +60,11 @@ return {
"kind": "LocalArgument",
"name": "before"
},
{
"defaultValue": null,
"kind": "LocalArgument",
"name": "filter"
},
{
"defaultValue": 50,
"kind": "LocalArgument",
@@ -69,7 +76,10 @@ return {
"name": "last"
},
{
"defaultValue": null,
"defaultValue": {
"direction": "ASC",
"field": "FULL_NAME"
},
"kind": "LocalArgument",
"name": "order"
}
@@ -111,6 +121,11 @@ return {
{
"alias": "peoples",
"args": [
{
"kind": "Variable",
"name": "filter",
"variableName": "filter"
},
{
"kind": "Variable",
"name": "orderBy",
@@ -174,6 +189,20 @@ return {
"name": "additionalEmailAddresses",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -255,6 +284,6 @@ return {
};
})();
(node as any).hash = "5e095baf6a65e7cdbaa804d4658cbb6b";
(node as any).hash = "c658d1fc05ce8d1c12e6ba4fd3cf8c52";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<1ec11120f71d4bc3040bcdd2665904c0>>
* @generated SignedSource<<c6717878cc2ffa24d0d56aab35c431c7>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -58,6 +58,14 @@ v4 = [
"kind": "Literal",
"name": "first",
"value": 50
},
{
"kind": "Literal",
"name": "orderBy",
"value": {
"direction": "ASC",
"field": "FULL_NAME"
}
}
];
return {
@@ -174,6 +182,20 @@ return {
"name": "additionalEmailAddresses",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
},
(v3/*: any*/)
],
"storageKey": null
@@ -240,13 +262,14 @@ return {
]
}
],
"storageKey": "peoples(first:50)"
"storageKey": "peoples(first:50,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})"
},
{
"alias": null,
"args": (v4/*: any*/),
"filters": [
"orderBy"
"orderBy",
"filter"
],
"handle": "connection",
"key": "PeopleGraphPaginatedQuery_peoples",
@@ -263,12 +286,12 @@ return {
]
},
"params": {
"cacheID": "1139d090f54b12e62e08f0a1970c9af0",
"cacheID": "dca6a1202b168afd54cac8484cf6fadd",
"id": null,
"metadata": {},
"name": "PeopleGraphPaginatedQuery",
"operationKind": "query",
"text": "query PeopleGraphPaginatedQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n id\n ...PeopleGraphPaginatedFragment\n }\n id\n }\n}\n\nfragment PeopleGraphPaginatedFragment on Organization {\n peoples(first: 50) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n kind\n position\n additionalEmailAddresses\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
"text": "query PeopleGraphPaginatedQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n id\n ...PeopleGraphPaginatedFragment\n }\n id\n }\n}\n\nfragment PeopleGraphPaginatedFragment on Organization {\n peoples(first: 50, orderBy: {direction: ASC, field: FULL_NAME}) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n kind\n position\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
}
};
})();

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<fbc31c6da75cbb26f402b2c88664950a>>
* @generated SignedSource<<f8f5d2692a9b278d16d997a3ba952b03>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -9,7 +9,11 @@
// @ts-nocheck
import { ConcreteRequest } from 'relay-runtime';
export type PeopleFilter = {
excludeContractEnded?: boolean | null | undefined;
};
export type PeopleGraphQuery$variables = {
filter?: PeopleFilter | null | undefined;
organizationId: string;
};
export type PeopleGraphQuery$data = {
@@ -31,33 +35,41 @@ export type PeopleGraphQuery = {
};
const node: ConcreteRequest = (function(){
var v0 = [
{
"defaultValue": null,
"kind": "LocalArgument",
"name": "organizationId"
}
],
v1 = [
var v0 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "filter"
},
v1 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "organizationId"
},
v2 = [
{
"kind": "Variable",
"name": "id",
"variableName": "organizationId"
}
],
v2 = {
v3 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
v3 = {
v4 = {
"kind": "InlineFragment",
"selections": [
{
"alias": null,
"args": [
{
"kind": "Variable",
"name": "filter",
"variableName": "filter"
},
{
"kind": "Literal",
"name": "first",
@@ -68,7 +80,7 @@ v3 = {
"name": "orderBy",
"value": {
"direction": "ASC",
"field": "CREATED_AT"
"field": "FULL_NAME"
}
}
],
@@ -93,7 +105,7 @@ v3 = {
"name": "node",
"plural": false,
"selections": [
(v2/*: any*/),
(v3/*: any*/),
{
"alias": null,
"args": null,
@@ -115,7 +127,7 @@ v3 = {
"storageKey": null
}
],
"storageKey": "peoples(first:100,orderBy:{\"direction\":\"ASC\",\"field\":\"CREATED_AT\"})"
"storageKey": null
}
],
"type": "Organization",
@@ -123,20 +135,23 @@ v3 = {
};
return {
"fragment": {
"argumentDefinitions": (v0/*: any*/),
"argumentDefinitions": [
(v0/*: any*/),
(v1/*: any*/)
],
"kind": "Fragment",
"metadata": null,
"name": "PeopleGraphQuery",
"selections": [
{
"alias": "organization",
"args": (v1/*: any*/),
"args": (v2/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v3/*: any*/)
(v4/*: any*/)
],
"storageKey": null
}
@@ -146,13 +161,16 @@ return {
},
"kind": "Request",
"operation": {
"argumentDefinitions": (v0/*: any*/),
"argumentDefinitions": [
(v1/*: any*/),
(v0/*: any*/)
],
"kind": "Operation",
"name": "PeopleGraphQuery",
"selections": [
{
"alias": "organization",
"args": (v1/*: any*/),
"args": (v2/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
@@ -165,24 +183,24 @@ return {
"name": "__typename",
"storageKey": null
},
(v3/*: any*/),
(v2/*: any*/)
(v4/*: any*/),
(v3/*: any*/)
],
"storageKey": null
}
]
},
"params": {
"cacheID": "cf76244f6aaa0c573bdeb7bf118ad2a3",
"cacheID": "cfb5be60bd39783154a815d178a8fa51",
"id": null,
"metadata": {},
"name": "PeopleGraphQuery",
"operationKind": "query",
"text": "query PeopleGraphQuery(\n $organizationId: ID!\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n peoples(first: 100, orderBy: {direction: ASC, field: CREATED_AT}) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n }\n }\n }\n }\n id\n }\n}\n"
"text": "query PeopleGraphQuery(\n $organizationId: ID!\n $filter: PeopleFilter\n) {\n organization: node(id: $organizationId) {\n __typename\n ... on Organization {\n peoples(first: 100, orderBy: {direction: ASC, field: FULL_NAME}, filter: $filter) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n }\n }\n }\n }\n id\n }\n}\n"
}
};
})();
(node as any).hash = "11220f45320400c451abeaf7479a8e47";
(node as any).hash = "79f4d511be3c7cfa63a774ac017a6f41";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<18d62863109c347d5fcf7b5701a9c57b>>
* @generated SignedSource<<a91a49863ad5c692ae869d3bcc0584cb>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -27,6 +27,8 @@ export type PeopleGraphUpdateMutation$data = {
readonly updatePeople: {
readonly people: {
readonly additionalEmailAddresses: ReadonlyArray<string>;
readonly contractEndDate: any | null | undefined;
readonly contractStartDate: any | null | undefined;
readonly fullName: string;
readonly id: string;
readonly kind: PeopleKind;
@@ -112,6 +114,20 @@ v1 = [
"kind": "ScalarField",
"name": "additionalEmailAddresses",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
}
],
"storageKey": null
@@ -138,16 +154,16 @@ return {
"selections": (v1/*: any*/)
},
"params": {
"cacheID": "814551d1fb24548c41d417342625071f",
"cacheID": "23c51259f3ff117441f9c6e11de5ba5a",
"id": null,
"metadata": {},
"name": "PeopleGraphUpdateMutation",
"operationKind": "mutation",
"text": "mutation PeopleGraphUpdateMutation(\n $input: UpdatePeopleInput!\n) {\n updatePeople(input: $input) {\n people {\n id\n fullName\n primaryEmailAddress\n position\n kind\n additionalEmailAddresses\n }\n }\n}\n"
"text": "mutation PeopleGraphUpdateMutation(\n $input: UpdatePeopleInput!\n) {\n updatePeople(input: $input) {\n people {\n id\n fullName\n primaryEmailAddress\n position\n kind\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n }\n }\n}\n"
}
};
})();
(node as any).hash = "ecc5666046434d5c8e80eaab0e508c11";
(node as any).hash = "fc0946729d6a2729aa1b7c9b2dfbdf7a";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<4cfc7218bc48a818eedc2ea87ac521e6>>
* @generated SignedSource<<e4afda2e1cb4e3fcfccfca64b086ad35>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -12,6 +12,9 @@ import { ConcreteRequest } from 'relay-runtime';
import { FragmentRefs } from "relay-runtime";
export type OrderDirection = "ASC" | "DESC";
export type PeopleOrderField = "CREATED_AT" | "FULL_NAME" | "KIND";
export type PeopleFilter = {
excludeContractEnded?: boolean | null | undefined;
};
export type PeopleOrder = {
direction: OrderDirection;
field: PeopleOrderField;
@@ -19,6 +22,7 @@ export type PeopleOrder = {
export type PeopleListQuery$variables = {
after?: any | null | undefined;
before?: any | null | undefined;
filter?: PeopleFilter | null | undefined;
first?: number | null | undefined;
id: string;
last?: number | null | undefined;
@@ -46,71 +50,85 @@ v1 = {
"name": "before"
},
v2 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "filter"
},
v3 = {
"defaultValue": 50,
"kind": "LocalArgument",
"name": "first"
},
v3 = {
v4 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "id"
},
v4 = {
v5 = {
"defaultValue": null,
"kind": "LocalArgument",
"name": "last"
},
v5 = {
"defaultValue": null,
v6 = {
"defaultValue": {
"direction": "ASC",
"field": "FULL_NAME"
},
"kind": "LocalArgument",
"name": "order"
},
v6 = [
v7 = [
{
"kind": "Variable",
"name": "id",
"variableName": "id"
}
],
v7 = {
v8 = {
"kind": "Variable",
"name": "after",
"variableName": "after"
},
v8 = {
v9 = {
"kind": "Variable",
"name": "before",
"variableName": "before"
},
v9 = {
v10 = {
"kind": "Variable",
"name": "filter",
"variableName": "filter"
},
v11 = {
"kind": "Variable",
"name": "first",
"variableName": "first"
},
v10 = {
v12 = {
"kind": "Variable",
"name": "last",
"variableName": "last"
},
v11 = {
v13 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "__typename",
"storageKey": null
},
v12 = {
v14 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
v13 = [
(v7/*: any*/),
v15 = [
(v8/*: any*/),
(v9/*: any*/),
(v10/*: any*/),
(v11/*: any*/),
(v12/*: any*/),
{
"kind": "Variable",
"name": "orderBy",
@@ -125,7 +143,8 @@ return {
(v2/*: any*/),
(v3/*: any*/),
(v4/*: any*/),
(v5/*: any*/)
(v5/*: any*/),
(v6/*: any*/)
],
"kind": "Fragment",
"metadata": null,
@@ -133,7 +152,7 @@ return {
"selections": [
{
"alias": null,
"args": (v6/*: any*/),
"args": (v7/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
@@ -141,10 +160,11 @@ return {
"selections": [
{
"args": [
(v7/*: any*/),
(v8/*: any*/),
(v9/*: any*/),
(v10/*: any*/),
(v11/*: any*/),
(v12/*: any*/),
{
"kind": "Variable",
"name": "order",
@@ -167,29 +187,30 @@ return {
(v0/*: any*/),
(v1/*: any*/),
(v2/*: any*/),
(v4/*: any*/),
(v3/*: any*/),
(v5/*: any*/),
(v3/*: any*/)
(v6/*: any*/),
(v4/*: any*/)
],
"kind": "Operation",
"name": "PeopleListQuery",
"selections": [
{
"alias": null,
"args": (v6/*: any*/),
"args": (v7/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v11/*: any*/),
(v12/*: any*/),
(v13/*: any*/),
(v14/*: any*/),
{
"kind": "InlineFragment",
"selections": [
{
"alias": null,
"args": (v13/*: any*/),
"args": (v15/*: any*/),
"concreteType": "PeopleConnection",
"kind": "LinkedField",
"name": "peoples",
@@ -211,7 +232,7 @@ return {
"name": "node",
"plural": false,
"selections": [
(v12/*: any*/),
(v14/*: any*/),
{
"alias": null,
"args": null,
@@ -247,7 +268,21 @@ return {
"name": "additionalEmailAddresses",
"storageKey": null
},
(v11/*: any*/)
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractStartDate",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "contractEndDate",
"storageKey": null
},
(v13/*: any*/)
],
"storageKey": null
},
@@ -317,9 +352,10 @@ return {
},
{
"alias": null,
"args": (v13/*: any*/),
"args": (v15/*: any*/),
"filters": [
"orderBy"
"orderBy",
"filter"
],
"handle": "connection",
"key": "PeopleGraphPaginatedQuery_peoples",
@@ -336,16 +372,16 @@ return {
]
},
"params": {
"cacheID": "8134caa0eab10c19236a49728f1f77b6",
"cacheID": "7df8a360f24224a73dc98c9b8f6da287",
"id": null,
"metadata": {},
"name": "PeopleListQuery",
"operationKind": "query",
"text": "query PeopleListQuery(\n $after: CursorKey = null\n $before: CursorKey = null\n $first: Int = 50\n $last: Int = null\n $order: PeopleOrder = null\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...PeopleGraphPaginatedFragment_16fISc\n id\n }\n}\n\nfragment PeopleGraphPaginatedFragment_16fISc on Organization {\n peoples(first: $first, after: $after, last: $last, before: $before, orderBy: $order) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n kind\n position\n additionalEmailAddresses\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
"text": "query PeopleListQuery(\n $after: CursorKey = null\n $before: CursorKey = null\n $filter: PeopleFilter = null\n $first: Int = 50\n $last: Int = null\n $order: PeopleOrder = {direction: ASC, field: FULL_NAME}\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...PeopleGraphPaginatedFragment_4cFWzS\n id\n }\n}\n\nfragment PeopleGraphPaginatedFragment_4cFWzS on Organization {\n peoples(first: $first, after: $after, last: $last, before: $before, orderBy: $order, filter: $filter) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n kind\n position\n additionalEmailAddresses\n contractStartDate\n contractEndDate\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n"
}
};
})();
(node as any).hash = "5e095baf6a65e7cdbaa804d4658cbb6b";
(node as any).hash = "c658d1fc05ce8d1c12e6ba4fd3cf8c52";
export default node;