Skip to content

Commit f51992d

Browse files
authored
add param offset for Entity.findManyPublic, Entity.searchManyPublic, useEntities (#551)
1 parent 890634e commit f51992d

8 files changed

Lines changed: 39 additions & 25 deletions

File tree

.changeset/witty-coats-march.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@graphprotocol/hypergraph-react": patch
3+
"@graphprotocol/hypergraph": patch
4+
---
5+
6+
add param `offset` for Entity.findManyPublic, Entity.searchManyPublic, useEntities
7+

apps/events/src/routes/podcasts.lazy.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ export const Route = createLazyFileRoute('/podcasts')({
77
});
88

99
function RouteComponent() {
10-
const space = '530a70d9-d5ee-410a-850a-cf70e4be2ee5';
10+
const space = 'e252f9e1-d3ad-4460-8bf1-54f93b02f220';
1111

1212
const { data, isLoading, isError } = useEntities(Podcast, {
1313
mode: 'public',
14-
first: 100,
14+
first: 6,
15+
offset: 0,
1516
space: space,
1617
include: {
1718
projects: {},

apps/events/src/schema.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,11 @@ export const Image = Entity.Schema(
109109
export const Project = Entity.Schema(
110110
{
111111
name: Type.String,
112-
description: Type.optional(Type.String),
113-
x: Type.optional(Type.String),
114112
},
115113
{
116-
types: [Id('484a18c5-030a-499c-b0f2-ef588ff16d50')],
114+
types: [Id('484a18c5-030a-499c-b0f2-ef588ff16d50')], // Project type
117115
properties: {
118116
name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'),
119-
description: Id('9b1f76ff-9711-404c-861e-59dc3fa7d037'),
120-
x: Id('0d625978-4b3c-4b57-a86f-de45c997c73c'),
121117
},
122118
},
123119
);
@@ -135,14 +131,14 @@ export const Podcast = Entity.Schema(
135131
}),
136132
},
137133
{
138-
types: [Id('69732974-c632-490d-81a3-12ea567b2a8e')],
134+
types: [Id('4c81561d-1f95-4131-9cdd-dd20ab831ba2')],
139135
properties: {
140136
name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'),
141137
description: Id('9b1f76ff-9711-404c-861e-59dc3fa7d037'),
142138
dateFounded: Id('41aa3d98-47b6-4a97-b7ec-427e575b910e'),
143-
rssFeedUrl: Id('4dd1a486-c1ad-48c6-b261-e4c8edf7ac65'),
139+
rssFeedUrl: Id('a5776138-deb8-436f-8c98-3eccd100d98f'),
144140
projects: {
145-
propertyId: Id('71931b5f-1d6a-462e-81d9-5b8e85fb5c4b'),
141+
propertyId: Id('1367bac7-dcea-4b80-86ad-a4a4cdd7c2cb'),
146142
properties: {
147143
website: Id('eed38e74-e679-46bf-8a42-ea3e4f8fb5fb'),
148144
},

packages/hypergraph-react/src/hooks/use-entities.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ type UseEntitiesParams<S extends Schema.Schema.AnyNoContext> = {
1010
include?: { [K in keyof Schema.Schema.Type<S>]?: Record<string, Record<string, never>> } | undefined;
1111
space?: string | undefined;
1212
first?: number | undefined;
13+
offset?: number | undefined;
1314
};
1415

1516
export function useEntities<const S extends Schema.Schema.AnyNoContext>(type: S, params: UseEntitiesParams<S>) {
16-
const { mode, filter, include, space, first } = params;
17-
const publicResult = useEntitiesPublic(type, { enabled: mode === 'public', filter, include, first, space });
17+
const { mode, filter, include, space, first, offset } = params;
18+
const publicResult = useEntitiesPublic(type, { enabled: mode === 'public', filter, include, first, offset, space });
1819
const localResult = useEntitiesPrivate(type, { enabled: mode === 'private', filter, include, space });
1920

2021
if (mode === 'public') {

packages/hypergraph-react/src/internal/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ export type QueryPublicParams<S extends Schema.Schema.AnyNoContext> = {
88
include?: { [K in keyof Schema.Schema.Type<S>]?: Record<string, Record<string, never>> } | undefined;
99
space?: string | undefined;
1010
first?: number | undefined;
11+
offset?: number | undefined;
1112
};

packages/hypergraph-react/src/internal/use-entities-public.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type { QueryPublicParams } from './types.js';
77
import { useHypergraphSpaceInternal } from './use-hypergraph-space-internal.js';
88

99
export const useEntitiesPublic = <S extends Schema.Schema.AnyNoContext>(type: S, params?: QueryPublicParams<S>) => {
10-
const { enabled = true, filter, include, space: spaceFromParams, first = 100 } = params ?? {};
10+
const { enabled = true, filter, include, space: spaceFromParams, first = 100, offset } = params ?? {};
1111
const { space: spaceFromContext } = useHypergraphSpaceInternal();
1212
const space = spaceFromParams ?? spaceFromContext;
1313

@@ -27,9 +27,10 @@ export const useEntitiesPublic = <S extends Schema.Schema.AnyNoContext>(type: S,
2727
relationTypeIds.level2,
2828
filter,
2929
first,
30+
offset,
3031
],
3132
queryFn: async () => {
32-
return Entity.findManyPublic(type, { filter, include, space, first });
33+
return Entity.findManyPublic(type, { filter, include, space, first, offset });
3334
},
3435
enabled,
3536
});

packages/hypergraph/src/entity/find-many-public.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@ export type FindManyPublicParams<S extends Schema.Schema.AnyNoContext> = {
1212
include?: { [K in keyof Schema.Schema.Type<S>]?: Record<string, Record<string, never>> } | undefined;
1313
space: string;
1414
first?: number | undefined;
15+
offset?: number | undefined;
1516
};
1617

1718
const entitiesQueryDocumentLevel0 = gql`
18-
query entities($spaceId: UUID!, $typeIds: [UUID!]!, $first: Int, $filter: EntityFilter!) {
19+
query entities($spaceId: UUID!, $typeIds: [UUID!]!, $first: Int, $filter: EntityFilter!, $offset: Int) {
1920
entities(
2021
filter: { and: [{
2122
relations: {some: {typeId: {is: "8f151ba4-de20-4e3c-9cb4-99ddf96f48f1"}, toEntityId: {in: $typeIds}}},
2223
spaceIds: {in: [$spaceId]},
2324
}, $filter]}
2425
first: $first
26+
offset: $offset
2527
) {
2628
id
2729
name
@@ -38,13 +40,14 @@ query entities($spaceId: UUID!, $typeIds: [UUID!]!, $first: Int, $filter: Entity
3840
`;
3941

4042
const entitiesQueryDocumentLevel1 = gql`
41-
query entities($spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $first: Int, $filter: EntityFilter!) {
43+
query entities($spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $first: Int, $filter: EntityFilter!, $offset: Int) {
4244
entities(
4345
first: $first
4446
filter: { and: [{
4547
relations: {some: {typeId: {is: "8f151ba4-de20-4e3c-9cb4-99ddf96f48f1"}, toEntityId: {in: $typeIds}}},
4648
spaceIds: {in: [$spaceId]},
4749
}, $filter]}
50+
offset: $offset
4851
) {
4952
id
5053
name
@@ -89,13 +92,14 @@ query entities($spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUI
8992
`;
9093

9194
const entitiesQueryDocumentLevel2 = gql`
92-
query entities($spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $relationTypeIdsLevel2: [UUID!]!, $first: Int, $filter: EntityFilter!) {
95+
query entities($spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $relationTypeIdsLevel2: [UUID!]!, $first: Int, $filter: EntityFilter!, $offset: Int) {
9396
entities(
9497
first: $first
9598
filter: { and: [{
9699
relations: {some: {typeId: {is: "8f151ba4-de20-4e3c-9cb4-99ddf96f48f1"}, toEntityId: {in: $typeIds}}},
97100
spaceIds: {in: [$spaceId]},
98101
}, $filter]}
102+
offset: $offset
99103
) {
100104
id
101105
name
@@ -292,7 +296,7 @@ export const findManyPublic = async <S extends Schema.Schema.AnyNoContext>(
292296
type: S,
293297
params?: FindManyPublicParams<S>,
294298
) => {
295-
const { filter, include, space, first = 100 } = params ?? {};
299+
const { filter, include, space, first = 100, offset = 0 } = params ?? {};
296300

297301
// constructing the relation type ids for the query
298302
const relationTypeIds = Utils.getRelationTypeIds(type, include);
@@ -318,6 +322,7 @@ export const findManyPublic = async <S extends Schema.Schema.AnyNoContext>(
318322
relationTypeIdsLevel2: relationTypeIds.level2,
319323
first,
320324
filter: filterParams,
325+
offset,
321326
});
322327

323328
const { data, invalidEntities } = parseResult(result, type);

packages/hypergraph/src/entity/search-many-public.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ export type SearchManyPublicParams<S extends Schema.Schema.AnyNoContext> = {
1313
include?: { [K in keyof Schema.Schema.Type<S>]?: Record<string, Record<string, never>> } | undefined;
1414
space: string | undefined;
1515
first?: number | undefined;
16+
offset?: number | undefined;
1617
};
1718

1819
const searchQueryDocumentLevel0 = gql`
19-
query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $first: Int, $filter: EntityFilter!) {
20+
query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $first: Int, $filter: EntityFilter!, $offset: Int) {
2021
search(
2122
query: $query
2223
filter: { and: [{
@@ -25,7 +26,7 @@ query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $first: Int,
2526
}, $filter]}
2627
spaceId: $spaceId
2728
first: $first
28-
offset: 0
29+
offset: $offset
2930
) {
3031
id
3132
name
@@ -42,7 +43,7 @@ query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $first: Int,
4243
`;
4344

4445
const searchQueryDocumentLevel1 = gql`
45-
query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $first: Int, $filter: EntityFilter!) {
46+
query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $first: Int, $filter: EntityFilter!, $offset: Int) {
4647
search(
4748
query: $query
4849
filter: { and: [{
@@ -51,7 +52,7 @@ query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $relationType
5152
}, $filter]}
5253
spaceId: $spaceId
5354
first: $first
54-
offset: 0
55+
offset: $offset
5556
) {
5657
id
5758
name
@@ -96,7 +97,7 @@ query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $relationType
9697
`;
9798

9899
const searchQueryDocumentLevel2 = gql`
99-
query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $relationTypeIdsLevel2: [UUID!]!, $first: Int, $filter: EntityFilter!) {
100+
query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $relationTypeIdsLevel1: [UUID!]!, $relationTypeIdsLevel2: [UUID!]!, $first: Int, $filter: EntityFilter!, $offset: Int) {
100101
search(
101102
query: $query
102103
filter: { and: [{
@@ -105,7 +106,7 @@ query search($query: String!, $spaceId: UUID!, $typeIds: [UUID!]!, $relationType
105106
}, $filter]}
106107
spaceId: $spaceId
107108
first: $first
108-
offset: 0
109+
offset: $offset
109110
) {
110111
id
111112
name
@@ -248,7 +249,7 @@ export const searchManyPublic = async <S extends Schema.Schema.AnyNoContext>(
248249
type: S,
249250
params?: SearchManyPublicParams<S>,
250251
) => {
251-
const { query, filter, include, space, first = 100 } = params ?? {};
252+
const { query, filter, include, space, first = 100, offset = 0 } = params ?? {};
252253

253254
// constructing the relation type ids for the query
254255
const relationTypeIds = Utils.getRelationTypeIds(type, include);
@@ -275,6 +276,7 @@ export const searchManyPublic = async <S extends Schema.Schema.AnyNoContext>(
275276
relationTypeIdsLevel2: relationTypeIds.level2,
276277
first,
277278
filter: filterParams,
279+
offset,
278280
});
279281

280282
const { data, invalidEntities } = parseResult({ entities: result.search }, type);

0 commit comments

Comments
 (0)