Skip to content

Commit f21aa07

Browse files
committed
update schema definition
1 parent 4e3c3a1 commit f21aa07

File tree

7 files changed

+64
-59
lines changed

7 files changed

+64
-59
lines changed

apps/events/src/schema.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
import { Entity } from '@graphprotocol/hypergraph';
1+
import { Entity, Type } from '@graphprotocol/hypergraph';
22

33
export class User extends Entity.Class<User>('User')({
4-
name: Entity.Text,
4+
name: Type.Text,
55
}) {}
66

77
export class Todo extends Entity.Class<Todo>('Todo')({
8-
name: Entity.Text,
9-
completed: Entity.Checkbox,
10-
assignees: Entity.Relation(User),
8+
name: Type.Text,
9+
completed: Type.Checkbox,
10+
assignees: Type.Relation(User),
1111
}) {}
1212

1313
export class Todo2 extends Entity.Class<Todo2>('Todo2')({
14-
name: Entity.Text,
15-
checked: Entity.Checkbox,
16-
assignees: Entity.Relation(User),
17-
due: Entity.Date,
18-
amount: Entity.Number,
19-
point: Entity.Point,
20-
website: Entity.Url,
14+
name: Type.Text,
15+
checked: Type.Checkbox,
16+
assignees: Type.Relation(User),
17+
due: Type.Date,
18+
amount: Type.Number,
19+
point: Type.Point,
20+
website: Type.Url,
2121
}) {}
2222

2323
export class NewsStory extends Entity.Class<NewsStory>('NewsStory')({
24-
name: Entity.Text,
25-
description: Entity.Text,
26-
publishDate: Entity.Text,
24+
name: Type.Text,
25+
description: Type.Text,
26+
publishDate: Type.Text,
2727
}) {}

packages/hypergraph-react/test/HypergraphSpaceContext.test.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { type AnyDocumentId, Repo } from '@automerge/automerge-repo';
22
import { RepoContext } from '@automerge/automerge-repo-react-hooks';
3-
import { Entity, Utils } from '@graphprotocol/hypergraph';
3+
import { Entity, Type, Utils } from '@graphprotocol/hypergraph';
44
import '@testing-library/jest-dom/vitest';
55
import { act, cleanup, renderHook, waitFor } from '@testing-library/react';
66
// biome-ignore lint/style/useImportType: <explanation>
@@ -21,17 +21,17 @@ afterEach(() => {
2121

2222
describe('HypergraphSpaceContext', () => {
2323
class Person extends Entity.Class<Person>('Person')({
24-
name: Entity.Text,
25-
age: Entity.Number,
24+
name: Type.Text,
25+
age: Type.Number,
2626
}) {}
2727

2828
class User extends Entity.Class<User>('User')({
29-
name: Entity.Text,
30-
email: Entity.Text,
29+
name: Type.Text,
30+
email: Type.Text,
3131
}) {}
3232

3333
class Event extends Entity.Class<Event>('Event')({
34-
name: Entity.Text,
34+
name: Type.Text,
3535
}) {}
3636

3737
const spaceId = '52gTkePWSoGdXmgZF3nRU';
Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import * as Data from 'effect/Data';
2-
import * as Schema from 'effect/Schema';
3-
import type { AnyNoContext, EntityWithRelation } from './types.js';
2+
import type { AnyNoContext } from './types.js';
43
import * as VariantSchema from './variant-schema.js';
54

65
const {
@@ -18,32 +17,10 @@ const {
1817
defaultVariant: 'select',
1918
});
2019

21-
export { Class };
22-
23-
export const Text = Schema.String;
24-
// biome-ignore lint/suspicious/noShadowRestrictedNames: is part of a namespaces module and therefor ok
25-
export const Number = Schema.Number;
26-
export const Checkbox = Schema.Boolean;
27-
// biome-ignore lint/suspicious/noShadowRestrictedNames: is part of a namespaces module and therefor ok
28-
export const Date = Schema.Date;
29-
export const Url = Schema.URL;
30-
export const Point = Schema.transform(Schema.String, Schema.Array(Number), {
31-
strict: true,
32-
decode: (str: string) => {
33-
return str.split(',').map((n: string) => globalThis.Number(n));
34-
},
35-
encode: (points: readonly number[]) => points.join(','),
36-
});
20+
export { Class, Field };
3721

3822
export class EntityNotFoundError extends Data.TaggedError('EntityNotFoundError')<{
3923
id: string;
4024
type: AnyNoContext;
4125
cause?: unknown;
4226
}> {}
43-
44-
export const Relation = <S extends AnyNoContext>(schema: S) =>
45-
Field({
46-
select: Schema.Array(schema) as unknown as Schema.Schema<ReadonlyArray<EntityWithRelation<S>>>,
47-
insert: Schema.optional(Schema.Array(Schema.String)),
48-
update: Schema.Undefined,
49-
});

packages/hypergraph/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
export * as Entity from './entity/index.js';
22
export * as Identity from './identity/index.js';
3+
export * as Inboxes from './inboxes/index.js';
34
export * as Key from './key/index.js';
45
export * as Messages from './messages/index.js';
56
export * as SpaceEvents from './space-events/index.js';
6-
export * as Inboxes from './inboxes/index.js';
77
export * from './store.js';
8+
export * as Type from './type/type.js';
89
export * as Utils from './utils/index.js';
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import * as Schema from 'effect/Schema';
2+
import { Field } from '../entity/entity.js';
3+
import type { AnyNoContext, EntityWithRelation } from '../entity/types.js';
4+
5+
export const Text = Schema.String;
6+
// biome-ignore lint/suspicious/noShadowRestrictedNames: is part of a namespaces module and therefor ok
7+
export const Number = Schema.Number;
8+
export const Checkbox = Schema.Boolean;
9+
// biome-ignore lint/suspicious/noShadowRestrictedNames: is part of a namespaces module and therefor ok
10+
export const Date = Schema.Date;
11+
export const Url = Schema.URL;
12+
export const Point = Schema.transform(Schema.String, Schema.Array(Number), {
13+
strict: true,
14+
decode: (str: string) => {
15+
return str.split(',').map((n: string) => globalThis.Number(n));
16+
},
17+
encode: (points: readonly number[]) => points.join(','),
18+
});
19+
20+
export const Relation = <S extends AnyNoContext>(schema: S) =>
21+
Field({
22+
select: Schema.Array(schema) as unknown as Schema.Schema<ReadonlyArray<EntityWithRelation<S>>>,
23+
insert: Schema.optional(Schema.Array(Schema.String)),
24+
update: Schema.Undefined,
25+
});

packages/hypergraph/test/entity/entity.test.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,26 @@ import { Repo } from '@automerge/automerge-repo';
33
import { beforeEach, describe, expect, it } from 'vitest';
44

55
import * as Entity from '../../src/entity/index.js';
6+
import * as Type from '../../src/type/type.js';
67
import { idToAutomergeId } from '../../src/utils/automergeId.js';
78

89
describe('Entity', () => {
910
class Person extends Entity.Class<Person>('Person')({
10-
name: Entity.Text,
11-
age: Entity.Number,
11+
name: Type.Text,
12+
age: Type.Number,
1213
}) {}
1314

1415
class User extends Entity.Class<User>('User')({
15-
name: Entity.Text,
16-
email: Entity.Text,
16+
name: Type.Text,
17+
email: Type.Text,
1718
}) {}
1819

1920
class Badge extends Entity.Class<Badge>('Badge')({
20-
name: Entity.Text,
21+
name: Type.Text,
2122
}) {}
2223

2324
class Event extends Entity.Class<Event>('Event')({
24-
name: Entity.Text,
25+
name: Type.Text,
2526
}) {}
2627

2728
const spaceId = '52gTkePWSoGdXmgZF3nRU';

packages/hypergraph/test/entity/findMany.test.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@ import { Repo } from '@automerge/automerge-repo';
33
import { beforeEach, describe, expect, it } from 'vitest';
44

55
import * as Entity from '../../src/entity/index.js';
6+
import * as Type from '../../src/type/type.js';
67
import { idToAutomergeId } from '../../src/utils/automergeId.js';
78

89
describe('findMany with filters', () => {
910
// Define entity classes for testing
1011
class Person extends Entity.Class<Person>('Person')({
11-
name: Entity.Text,
12-
age: Entity.Number,
13-
isActive: Entity.Checkbox,
12+
name: Type.Text,
13+
age: Type.Number,
14+
isActive: Type.Checkbox,
1415
}) {}
1516

1617
class Product extends Entity.Class<Product>('Product')({
17-
name: Entity.Text,
18-
price: Entity.Number,
19-
category: Entity.Text,
18+
name: Type.Text,
19+
price: Type.Number,
20+
category: Type.Text,
2021
}) {}
2122

2223
const spaceId = '52gTkePWSoGdXmgZF3nRU';

0 commit comments

Comments
 (0)