Jsonify work
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-03-21 00:52:26 +01:00
parent f666eff496
commit a5c5b62c9f
4 changed files with 35 additions and 35 deletions

View File

@@ -1,7 +1,6 @@
import { Implements } from "@thilawyn/traitify-ts"
import { Option } from "effect"
import { z } from "zod"
import { JsonifiedZodSchemaClass } from "./JsonifiedZodSchemaClass"
import { ZodSchemaClass } from "./ZodSchemaClass"
import { dejsonify, jsonify } from "./schema/jsonified"
import { jsonifyBigIntSchema } from "./schema/jsonified/bigint"
@@ -44,23 +43,34 @@ const jsonifiedBigIntOptionSome = jsonify.option.some(
)
type T2 = z.output<typeof jsonifiedBigIntOptionSome>
const jsonifiedBigIntOptionNone = jsonify.option.none(
effect.option.none(z.bigint()),
jsonifyBigIntSchema,
)
type T3 = z.output<typeof jsonifiedBigIntOptionNone>
const jsonifiedUserExp = JsonifiedZodSchemaClass(User, {
jsonifySchema: s => s.extend({
id: jsonify.bigint(s.shape.id)
}),
dejsonifySchema: s => s.extend({
id: dejsonify.bigint(s.shape.id)
}),
}).build()
const dejsonifyBigInt = dejsonify.bigint(z.bigint())
type T4 = z.input<typeof dejsonifyBigInt>
@jsonifiedUserExp.staticImplements
class JsonifiedUser extends jsonifiedUserExp.extends implements Implements<typeof jsonifiedUserExp> {}
const jsonifiedUserInst = JsonifiedUser.jsonify(userInst)
console.log(JSON.stringify(jsonifiedUserInst))
jsonifiedUserInst.dejsonify()
// const jsonifiedUserExp = JsonifiedZodSchemaClass(User, {
// jsonifySchema: s => s.extend({
// id: jsonify.bigint(s.shape.id)
// }),
// dejsonifySchema: s => s.extend({
// id: dejsonify.bigint(s.shape.id)
// }),
// }).build()
// @jsonifiedUserExp.staticImplements
// class JsonifiedUser extends jsonifiedUserExp.extends implements Implements<typeof jsonifiedUserExp> {}
// const jsonifiedUserInst = JsonifiedUser.jsonify(userInst)
// console.log(JSON.stringify(jsonifiedUserInst))
// jsonifiedUserInst.dejsonify()
const adminUserExp = User.extend(s => s.extend({
role: z.literal("Admin").default("Admin")