Skip to content

Commit ee87019

Browse files
committed
fix interface gen
1 parent e3df281 commit ee87019

File tree

3 files changed

+354
-339
lines changed

3 files changed

+354
-339
lines changed

src/orm/build/generate-interface/build-fields.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { fieldTypeMap } from "~/orm/build/generate-interface/field-type-map.ts";
22
import { raiseORMException } from "~/orm/orm-exception.ts";
33
import type { InField } from "~/orm/field/field-def-types.ts";
44

5-
export function buildField(field: InField): string {
5+
export function buildField(field: InField, forClient?: boolean): string {
66
const { label, description, required } = field;
77
let fieldType = fieldTypeMap[field.type];
88
if (field.type === "ChoicesField") {
@@ -38,20 +38,27 @@ export function buildField(field: InField): string {
3838
lines.push(
3939
`${field.key}${
4040
required || field.type === "BooleanField" ? "" : "?"
41-
}: ${fieldType};`,
41+
}: ${fieldType}${
42+
forClient
43+
? ""
44+
: field.type === "BooleanField" || required
45+
? ""
46+
: " | null"
47+
};`,
4248
);
4349
return lines.join("\n");
4450
}
4551

4652
export function buildFields(
4753
fieldDefs: Map<string, InField>,
4854
excludeFields: Array<string> = [],
55+
forClient = false,
4956
): Array<string> {
5057
const exclude = new Set<string>(excludeFields);
5158
const fields: string[] = [];
5259
fieldDefs.forEach((field) => {
5360
if (exclude.has(field.key)) return;
54-
fields.push(buildField(field));
61+
fields.push(buildField(field, forClient));
5562
});
5663
return fields;
5764
}

src/orm/build/generate-interface/generate-client-interface.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ export function generateClientEntryInterface(
8080
` _name:"${convertString(entryOrSettingsType.name, "camel", true)}"`,
8181
];
8282

83-
const fields = buildFields(entryOrSettingsType.fields);
83+
const fields = buildFields(entryOrSettingsType.fields, [], true);
8484
outLines.push(...fields);
8585
for (const child of entryOrSettingsType.children?.values() || []) {
86-
const childFields = buildFields(child.fields);
86+
const childFields = buildFields(child.fields, [], true);
8787
outLines.push(
8888
`${child.name}: Array<{ ${childFields.join("\n")}}>`,
8989
);

0 commit comments

Comments
 (0)