Skip to content

Commit caacaf2

Browse files
committed
Register custom scalar codecs for type generation
This means we can gen correct types, not statically known, for query files & inline queries. These two processes (via `$.analyzeQuery`) use the `tsType` property from the codec. Since we set the codecs in the client's codec registry now, we don't need to modify the SCALAR_CODECS global.
1 parent a23cff7 commit caacaf2

File tree

2 files changed

+9
-14
lines changed

2 files changed

+9
-14
lines changed

src/core/edgedb/generator/run.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { createClient } from 'edgedb';
22
import { IndentationText, Project, QuoteKind } from 'ts-morph';
3+
import { codecs, registerCustomScalarCodecs } from '../codecs';
34
import { generateSchema } from './generate-schema';
45
import { generateInlineQueries } from './inline-queries';
56
import { generateQueryBuilder } from './query-builder';
67
import { generateQueryFiles } from './query-files';
7-
import { changeScalarCodecsToOurCustomTypes } from './scalars';
8+
import { setTsTypesFromOurScalarCodecs } from './scalars';
89
import { GeneratorParams } from './util';
910

1011
(async () => {
@@ -29,7 +30,8 @@ import { GeneratorParams } from './util';
2930
edgedbDir: project.addDirectoryAtPath('src/core/edgedb'),
3031
};
3132

32-
changeScalarCodecsToOurCustomTypes();
33+
await registerCustomScalarCodecs(client, codecs);
34+
setTsTypesFromOurScalarCodecs();
3335

3436
try {
3537
await generateQueryBuilder(params);
Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
11
import { scalarToLiteralMapping } from '@edgedb/generate/dist/genutil.js';
22
import { mapEntries } from '@seedcompany/common';
3-
import { SCALAR_CODECS } from 'edgedb/dist/codecs/codecs.js';
4-
import { KNOWN_TYPENAMES } from 'edgedb/dist/codecs/consts.js';
53
import { codecs } from '../codecs';
64

75
export const customScalars = mapEntries(codecs, (codec) => [
86
codec.info.ts,
97
codec.info,
108
]).asMap;
119

12-
export function changeScalarCodecsToOurCustomTypes() {
13-
for (const codec of codecs) {
14-
const fqName = `${codec.info.module}::${codec.info.type}`;
15-
16-
// codecs are used for edgeql files & inline queries ($.analyzeQuery)
17-
const id = KNOWN_TYPENAMES.get(fqName);
18-
id && SCALAR_CODECS.set(id, new codec(id));
19-
20-
// this is used for schema interfaces
21-
scalarToLiteralMapping[fqName].type = codec.info.ts;
10+
export function setTsTypesFromOurScalarCodecs() {
11+
// this is used for schema interfaces
12+
for (const { info } of codecs) {
13+
const fqName = `${info.module}::${info.type}`;
14+
scalarToLiteralMapping[fqName].type = info.ts;
2215
}
2316
}

0 commit comments

Comments
 (0)