33 lines
860 B
TypeScript
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())
|