Skip to content

Commit 951dde2

Browse files
authored
[EdgeDB] RichText Scalar (#3050)
1 parent f5d5b64 commit 951dde2

File tree

6 files changed

+51
-2
lines changed

6 files changed

+51
-2
lines changed

dbschema/common.esdl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@ module default {
1515
)
1616
)
1717
);
18+
19+
scalar type RichText extending json;
1820
}

dbschema/engagement.esdl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ module default {
3737
rewrite insert, update using (.endDate if .status = Engagement::Status.InDevelopment else .initialEndDate);
3838
};
3939

40-
description: json;
40+
description: RichText;
4141
}
4242

4343
type LanguageEngagement extending Engagement {

dbschema/migrations/00043.edgeql

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
CREATE MIGRATION m1wmrb3grzq5y55y5c447noyxdw26fcpatlu46n5f6ffh572opam6a
2+
ONTO m1r3t2ku2jysgjliaq54y7saj4tuxecilnajoxgwa2blsb3p64svzq
3+
{
4+
CREATE SCALAR TYPE default::RichText EXTENDING std::json;
5+
ALTER TYPE default::Engagement {
6+
ALTER PROPERTY description {
7+
SET TYPE default::RichText;
8+
};
9+
};
10+
ALTER TYPE default::Post {
11+
ALTER PROPERTY body {
12+
SET TYPE default::RichText;
13+
};
14+
};
15+
};

dbschema/post.esdl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module default {
1414

1515
required type: Post::Type;
1616
required shareability: Post::Shareability;
17-
required body: json;
17+
required body: RichText;
1818

1919
single property sensitivity := .container[is Project::ContextAware].sensitivity;
2020
single property isMember := .container[is Project::ContextAware].isMember;

src/core/edgedb/codecs/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { RichTextCodec } from './rich-text.codec';
12
import { LuxonCalendarDateCodec, LuxonDateTimeCodec } from './temporal.codec';
23
import { ScalarCodecClass } from './type.util';
34
import { OurUUIDCodec } from './uuid.codec';
@@ -9,4 +10,5 @@ export const codecs: readonly ScalarCodecClass[] = [
910
OurUUIDCodec,
1011
LuxonDateTimeCodec,
1112
LuxonCalendarDateCodec,
13+
RichTextCodec,
1214
];
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { InvalidArgumentError } from 'edgedb';
2+
import { JSONCodec } from 'edgedb/dist/codecs/json.js';
3+
import { ReadBuffer, WriteBuffer } from 'edgedb/dist/primitives/buffer.js';
4+
import { RichTextDocument } from '~/common/rich-text.scalar';
5+
import { ScalarInfo } from './type.util';
6+
7+
export class RichTextCodec extends JSONCodec {
8+
static info: ScalarInfo = {
9+
module: 'default',
10+
type: 'RichText',
11+
ts: RichTextDocument.name,
12+
path: '~/common',
13+
};
14+
tsType = RichTextDocument.name;
15+
importedType = true;
16+
17+
encode(buf: WriteBuffer, object: unknown) {
18+
if (!(object instanceof RichTextDocument)) {
19+
throw new InvalidArgumentError(
20+
`a RichTextDocument was expected, got "${String(object)}"`,
21+
);
22+
}
23+
super.encode(buf, object);
24+
}
25+
26+
decode(buf: ReadBuffer): RichTextDocument {
27+
const doc = super.decode(buf);
28+
return RichTextDocument.from(doc);
29+
}
30+
}

0 commit comments

Comments
 (0)