Files
zod-schema-class/src/tests.ts
2024-01-02 02:54:40 +01:00

33 lines
860 B
TypeScript

import { z } from "zod"
import { makeSchemableClass, newSchemable } from "."
import { dejsonifyBigIntSchema, jsonifyBigIntSchema, makeJsonifiableSchemableClass } from "./jsonifiable"
const UserSchema = z.object({
/** User ID */
id: z.bigint().default(-1n)
})
const UserSchemableObject = makeSchemableClass({ schema: UserSchema })
const UserJsonifiableSchemableObject = makeJsonifiableSchemableClass(UserSchemableObject, {
jsonifySchema: ({ schema, s }) => schema.extend({
id: jsonifyBigIntSchema(s.id)
}),
dejsonifySchema: ({ schema, s }) => schema.extend({
id: dejsonifyBigIntSchema(s.id)
}),
})
class User extends UserJsonifiableSchemableObject {}
const user1 = new User({ id: 1n })
const user2 = newSchemable(User, { id: 2n })
console.log(user1)
console.log(user2)
console.log(await user2.jsonifyPromise())