Re-useable zod schema's for use with SurrealDB sdk.
Install it with:
# using npm
npm i surrealdb-zod
# or using pnpm
pnpm i surrealdb-zod
# or using yarn
yarn add surrealdb-zod
Next, import the schema's, e.g.:
import { RecordIdSchema } from "surreal-zod";
Use it as you would a normal zod schema
e.g.:
import { RecordIdSchema, RecordIdSchemaOf } from "surreal-zod";
import { z } from "zod";
// `id` must be an instance of class `RecordId`
const PersonSchema = z.object({
id: RecordIdSchema,
});
// or
// `id` must be an instance of class `RecordId` and table must be "person"
const PersonSchema = z.object({
id: RecordIdSchemaOf("person"),
});
- All schema names consist of
{ClassName}Schema
, e.g. forRecordId
it isRecordIdSchema
- If the class has optional generic types e.g.
RecordId
can beRecordId<"person">
naming will be{ClassName}SchemaOf
and will be a function
e.g. usage:const schema = RecordIdSchemaOf("person")
- Some types like
Range
have required generic types, these schema's are function and follow the following naming scheme:{ClassName}Schema
e.g.:RangeSchema(z.string(), z.string())
- Some schema function have props that are a
string
(e.g.RecordIdSchemaOf
) and some are any zod schema (e.g.RangeSchema
)