From a0edcf483b8a5ce3b2a883c642b50241e9a26aec Mon Sep 17 00:00:00 2001 From: dswbx Date: Sat, 7 Jun 2025 08:24:21 +0200 Subject: [PATCH] added more tests, updated json schema generation --- .../data/specs/fields/PrimaryField.spec.ts | 24 +++++++++++++++++++ app/src/data/fields/PrimaryField.ts | 4 ++++ 2 files changed, 28 insertions(+) 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 })); }