From 0b444be01e78614a6c4512199f23bed8bd2709b0 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Fri, 15 Aug 2025 11:26:54 +0200 Subject: [PATCH 1/2] fix filter type for useQuery --- apps/events/src/components/playground.tsx | 4 +--- apps/events/src/components/todos.tsx | 6 +++++- apps/events/src/mapping.ts | 3 --- apps/events/src/schema.ts | 5 +---- packages/hypergraph-react/src/HypergraphSpaceContext.tsx | 2 +- packages/hypergraph-react/src/internal/types.ts | 2 +- packages/hypergraph-react/src/use-query.tsx | 2 +- 7 files changed, 10 insertions(+), 14 deletions(-) diff --git a/apps/events/src/components/playground.tsx b/apps/events/src/components/playground.tsx index 1c378788..1ecaf4d9 100644 --- a/apps/events/src/components/playground.tsx +++ b/apps/events/src/components/playground.tsx @@ -18,9 +18,7 @@ export const Playground = ({ spaceId }: { spaceId: string }) => { }, }, // filter: { - // name: { - // startsWith: 'test', - // }, + // or: [{ name: { startsWith: 'test' } }, { name: { startsWith: 'ETH' } }], // }, first: 100, space: spaceId, diff --git a/apps/events/src/components/todos.tsx b/apps/events/src/components/todos.tsx index cb748bc9..bda38ed6 100644 --- a/apps/events/src/components/todos.tsx +++ b/apps/events/src/components/todos.tsx @@ -13,7 +13,11 @@ import { Button } from './ui/button'; import { Input } from './ui/input'; export const Todos = () => { - const { data: todos } = useQuery(Todo, { mode: 'private', include: { assignees: {} } }); + const { data: todos } = useQuery(Todo, { + mode: 'private', + include: { assignees: {} }, + // filter: { or: [{ name: { startsWith: 'aa' } }, { name: { is: 'sdasd' } }] }, + }); const { data: users } = useQuery(User, { mode: 'private' }); const { ready: spaceReady } = useSpace({ mode: 'private' }); const createEntity = useCreateEntity(Todo); diff --git a/apps/events/src/mapping.ts b/apps/events/src/mapping.ts index ecc292a3..5ae34fca 100644 --- a/apps/events/src/mapping.ts +++ b/apps/events/src/mapping.ts @@ -6,7 +6,6 @@ export const mapping: Mapping = { typeIds: [Id('bffa181e-a333-495b-949c-57f2831d7eca')], properties: { name: Id('c9c79675-850a-42c5-bbbd-9e5c55d3f4e7'), - created: Id('f8df1caf-14b4-4c1e-85fb-4e97f7d7070a'), }, }, Todo: { @@ -54,8 +53,6 @@ export const mapping: Mapping = { properties: { name: Id('a126ca53-0c8e-48d5-b888-82c734c38935'), description: Id('9b1f76ff-9711-404c-861e-59dc3fa7d037'), - createdAt: Id('e2e6906b-d2b6-48d2-8aa2-54e8b29f6933'), - updatedAt: Id('2e877fe0-a504-4ea0-b43c-210d011db434'), }, relations: { sponsors: Id('6860bfac-f703-4289-b789-972d0aaf3abe'), diff --git a/apps/events/src/schema.ts b/apps/events/src/schema.ts index 60ae225b..ff8bf043 100644 --- a/apps/events/src/schema.ts +++ b/apps/events/src/schema.ts @@ -2,7 +2,6 @@ import { Entity, Type } from '@graphprotocol/hypergraph'; export class User extends Entity.Class('User')({ name: Type.String, - created: Type.Date, }) {} export class Todo extends Entity.Class('Todo')({ @@ -33,10 +32,8 @@ export class Company extends Entity.Class('Company')({ export class Event extends Entity.Class('Event')({ name: Type.String, - description: Type.String, + description: Type.optional(Type.String), sponsors: Type.Relation(Company), - createdAt: Type.Date, - updatedAt: Type.Date, }) {} export class Todo3 extends Entity.Class('Todo3')({ diff --git a/packages/hypergraph-react/src/HypergraphSpaceContext.tsx b/packages/hypergraph-react/src/HypergraphSpaceContext.tsx index 6c35a2f3..84c49193 100644 --- a/packages/hypergraph-react/src/HypergraphSpaceContext.tsx +++ b/packages/hypergraph-react/src/HypergraphSpaceContext.tsx @@ -134,7 +134,7 @@ export function useHardDeleteEntity(options?: { space?: string }) { type QueryParams = { space?: string | undefined; enabled: boolean; - filter?: { [K in keyof Schema.Schema.Type]?: Entity.EntityFieldFilter[K]> } | undefined; + filter?: Entity.EntityFilter> | undefined; include?: { [K in keyof Schema.Schema.Type]?: Record> } | undefined; }; diff --git a/packages/hypergraph-react/src/internal/types.ts b/packages/hypergraph-react/src/internal/types.ts index 16bd583d..2090adc0 100644 --- a/packages/hypergraph-react/src/internal/types.ts +++ b/packages/hypergraph-react/src/internal/types.ts @@ -4,7 +4,7 @@ import type * as Schema from 'effect/Schema'; export type QueryPublicParams = { enabled: boolean; space?: string | undefined; - filter?: { [K in keyof Schema.Schema.Type]?: Entity.EntityFieldFilter[K]> } | undefined; + filter?: Entity.EntityFilter> | undefined; // TODO: for multi-level nesting it should only allow the allowed properties instead of Record> include?: { [K in keyof Schema.Schema.Type]?: Record> } | undefined; first?: number | undefined; diff --git a/packages/hypergraph-react/src/use-query.tsx b/packages/hypergraph-react/src/use-query.tsx index 1436eead..11e03548 100644 --- a/packages/hypergraph-react/src/use-query.tsx +++ b/packages/hypergraph-react/src/use-query.tsx @@ -5,7 +5,7 @@ import { useQueryPublic } from './internal/use-query-public.js'; type QueryParams = { mode: 'public' | 'private'; - filter?: { [K in keyof Schema.Schema.Type]?: Entity.EntityFieldFilter[K]> } | undefined; + filter?: Entity.EntityFilter> | undefined; // TODO: for multi-level nesting it should only allow the allowed properties instead of Record> include?: { [K in keyof Schema.Schema.Type]?: Record> } | undefined; space?: string | undefined; From 52c189f6860b3c4fb012010f317d63dff2da5098 Mon Sep 17 00:00:00 2001 From: Nik Graf Date: Fri, 15 Aug 2025 11:28:13 +0200 Subject: [PATCH 2/2] add changeset --- .changeset/new-teams-dig.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/new-teams-dig.md diff --git a/.changeset/new-teams-dig.md b/.changeset/new-teams-dig.md new file mode 100644 index 00000000..64931456 --- /dev/null +++ b/.changeset/new-teams-dig.md @@ -0,0 +1,6 @@ +--- +"@graphprotocol/hypergraph-react": patch +--- + +fix type for useQuery filter option to allwo for or/not operators + \ No newline at end of file