Zod extension for Kanel
Generate Zod schemas directly from your Postgres database.
This packages extends Kanel with some Zod specific features.
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 = {
preRenderHooks: [generateZodSchemas],
};
Usage with zodCamelCaseHook
This pre-render hook will transform all zod object properties to camelCase
, for example:
export const actor = z.object({
actor_id: z.number(),
first_name: z.string(),
last_name: z.string(),
last_update: z.date(),
});
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 = {
preRenderHooks: [generateZodSchemas, zodCamelCaseHook],
};