diff --git a/app/__test__/data/specs/fields/PrimaryField.spec.ts b/app/__test__/data/specs/fields/PrimaryField.spec.ts index 6be0166..c40ee14 100644 --- a/app/__test__/data/specs/fields/PrimaryField.spec.ts +++ b/app/__test__/data/specs/fields/PrimaryField.spec.ts @@ -39,4 +39,28 @@ describe("[data] PrimaryField", async () => { expect(field.transformPersist(1)).rejects.toThrow(); expect(field.transformRetrieve(1)).toBe(1); }); + + test("format", () => { + const uuid = new PrimaryField("uuid", { format: "uuid" }); + expect(uuid.format).toBe("uuid"); + expect(uuid.fieldType).toBe("text"); + expect(uuid.getNewValue()).toBeString(); + expect(uuid.toType()).toEqual({ + required: true, + comment: undefined, + type: "Generated", + import: [{ package: "kysely", name: "Generated" }], + }); + + const integer = new PrimaryField("integer", { format: "integer" }); + expect(integer.format).toBe("integer"); + expect(integer.fieldType).toBe("integer"); + expect(integer.getNewValue()).toBeUndefined(); + expect(integer.toType()).toEqual({ + required: true, + comment: undefined, + type: "Generated", + import: [{ package: "kysely", name: "Generated" }], + }); + }); }); diff --git a/app/src/data/fields/PrimaryField.ts b/app/src/data/fields/PrimaryField.ts index efcfd6f..2f83c20 100644 --- a/app/src/data/fields/PrimaryField.ts +++ b/app/src/data/fields/PrimaryField.ts @@ -67,6 +67,10 @@ export class PrimaryField extends Field< } override toJsonSchema() { + if (this.format === "uuid") { + return this.toSchemaWrapIfRequired(Type.String({ writeOnly: undefined })); + } + return this.toSchemaWrapIfRequired(Type.Number({ writeOnly: undefined })); }