Skip to content

Commit 7556d4b

Browse files
authored
Merge pull request #88 from geobrowser/model-nominal-types
add model based nominal type system
2 parents 0b63e18 + 644dacf commit 7556d4b

File tree

16 files changed

+759
-534
lines changed

16 files changed

+759
-534
lines changed

apps/events/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"@xmtp/xmtp-js": "^13.0.0",
3232
"class-variance-authority": "^0.7.0",
3333
"clsx": "^2.1.1",
34-
"effect": "^3.10.19",
34+
"effect": "^3.12.2",
3535
"ethers": "^6.13.3",
3636
"isomorphic-ws": "^5.0.0",
3737
"lucide-react": "^0.441.0",

apps/events/src/components/todos-app.tsx

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { useState } from 'react';
2-
import { useCreateEntity, useDeleteEntity, useQuery, useUpdateEntity } from '../schema';
2+
3+
import { useCreateEntity, useDeleteEntity, useQuery, useUpdateEntity } from '@graph-framework/schema';
4+
5+
import { Todo } from '../schema';
36
import { Button } from './ui/button';
47
import { Input } from './ui/input';
58

69
export const TodosApp = () => {
7-
const createEntity = useCreateEntity();
8-
const updateEntity = useUpdateEntity();
10+
const todos = useQuery(Todo);
11+
const createEntity = useCreateEntity(Todo);
12+
const updateEntity = useUpdateEntity(Todo);
913
const deleteEntity = useDeleteEntity();
10-
const todos = useQuery({ types: ['Todo'] });
1114
const [newTodoTitle, setNewTodoTitle] = useState('');
1215

1316
return (
@@ -17,10 +20,7 @@ export const TodosApp = () => {
1720
<Input type="text" value={newTodoTitle} onChange={(e) => setNewTodoTitle(e.target.value)} />
1821
<Button
1922
onClick={() => {
20-
createEntity({
21-
types: ['Todo'],
22-
data: { name: newTodoTitle, completed: false },
23-
});
23+
createEntity({ name: newTodoTitle, completed: false });
2424
setNewTodoTitle('');
2525
}}
2626
>
@@ -33,13 +33,7 @@ export const TodosApp = () => {
3333
<input
3434
type="checkbox"
3535
checked={todo.completed}
36-
onChange={(e) =>
37-
updateEntity({
38-
id: todo.id,
39-
types: ['Todo'],
40-
data: { completed: e.target.checked },
41-
})
42-
}
36+
onChange={(e) => updateEntity(todo.id, { completed: e.target.checked })}
4337
/>
4438
<Button onClick={() => deleteEntity(todo.id)}>Delete</Button>
4539
</div>

apps/events/src/schema.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import { createSchemaHooks, type } from '@graphprotocol/graph-framework';
1+
import { Model, Types } from '@graphprotocol/graph-framework';
22

3-
export const { useCreateEntity, useDeleteEntity, useQuery, useUpdateEntity } = createSchemaHooks({
4-
Todo: {
5-
name: type.Text,
6-
completed: type.Checkbox,
7-
},
8-
});
3+
export class Todo extends Model.Class<Todo>('Todo')({
4+
id: Model.Generated(Types.Text),
5+
name: Types.Text,
6+
completed: Types.Checkbox,
7+
}) {}

apps/server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"@prisma/client": "5.22.0",
2626
"cors": "^2.8.5",
2727
"dotenv": "^16.4.5",
28-
"effect": "^3.10.19",
28+
"effect": "^3.12.2",
2929
"express": "^5.0.1",
3030
"siwe": "^2.3.2",
3131
"viem": "^2.21.56",

packages/graph-framework-identity/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
},
3333
"devDependencies": {
3434
"@types/react": "^18.3.7",
35-
"effect": "^3.10.19"
35+
"effect": "^3.12.2"
3636
},
3737
"dependencies": {
3838
"@graph-framework/key": "workspace:*",

packages/graph-framework-key/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@
3131
"@noble/ciphers": "^1.0.0",
3232
"@noble/curves": "^1.6.0",
3333
"@noble/hashes": "^1.5.0",
34-
"effect": "^3.10.19"
34+
"effect": "^3.12.2"
3535
}
3636
}

packages/graph-framework-messages/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@
2828
"check:fix": "pnpm biome check --write src/*"
2929
},
3030
"dependencies": {
31+
"@graph-framework/space-events": "workspace:*",
3132
"@noble/ciphers": "^1.0.0",
3233
"@noble/curves": "^1.6.0",
33-
"effect": "^3.10.19",
34-
"@graph-framework/space-events": "workspace:*"
34+
"effect": "^3.12.2"
3535
}
3636
}

packages/graph-framework-schema/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,24 @@
3131
"@automerge/automerge": "^2",
3232
"@automerge/automerge-repo": "^2",
3333
"@automerge/automerge-repo-react-hooks": "^2",
34-
"effect": "^3.10.19",
34+
"@effect/experimental": "^0.36.2",
35+
"effect": "^3.12.2",
3536
"react": "^18"
3637
},
3738
"devDependencies": {
3839
"@automerge/automerge": "^v2.2.9-alpha.3",
3940
"@automerge/automerge-repo": "^2.0.0-alpha.14",
4041
"@automerge/automerge-repo-react-hooks": "^2.0.0-alpha.14",
41-
"effect": "^3.10.19",
42+
"@effect/experimental": "^0.36.2",
4243
"@testing-library/jest-dom": "^6.5.0",
4344
"@testing-library/react": "^16.0.1",
4445
"@types/react": "^18.3.7",
4546
"@types/uuid": "^10.0.0",
4647
"@vitejs/plugin-react": "^4.3.2",
48+
"effect": "^3.12.2",
4749
"jsdom": "^25.0.1"
4850
},
4951
"dependencies": {
50-
"fast-deep-equal": "^3.1.3",
5152
"@graph-framework/utils": "workspace:*"
5253
}
5354
}

0 commit comments

Comments
 (0)