kanel-zod
v1.4.0
Published
Zod extension for Kanel
Downloads
21,439
Maintainers
Readme
Zod extension for Kanel
Generate Zod schemas directly from your Postgres database. This packages extends Kanel with some Zod specific features.
/** Zod schema for actor */
export const actor = z.object({
actor_id: z.number(),
first_name: z.string(),
last_name: z.string(),
last_update: z.date(),
});
Assuming you already have Kanel installed, add this with
$ npm i -D kanel-zod
generateZodSchemas
This pre-render hook will generate zod schemas for all your types. The default setup will convert the table name into camelCase
which is a semi-standard Typescript convention for items that aren't types.
The
To use it, add it to your .kanelrc.js
file:
const { generateZodSchemas } = require("kanel-zod");
module.exports = {
// ... your config here.
preRenderHooks: [generateZodSchemas],
};
Usage with zodCamelCaseHook
This pre-render hook will transform all zod object properties to camelCase
, for example:
/**Before the hook */
export const actor = z.object({
actor_id: z.number(),
first_name: z.string(),
last_name: z.string(),
last_update: z.date(),
});
/**After the hook */
export const actor = z.object({
actorId: z.number(),
firstName: z.string(),
lastName: z.string(),
lastUpdate: z.date(),
});
To use it, add it to your .kanelrc.js
file:
const { zodCamelCaseHook } = require("kanel-zod");
module.exports = {
// ... your config here.
preRenderHooks: [generateZodSchemas, zodCamelCaseHook],
};