Schema
schema - zodSchema名の設定
設定項目
schemaの設定項目は、以下のようなオブジェクトを取ります。
const options = {  schema: {    format: "camel",    prefix: "",    suffix: "Schema",    replacements: [],    nullType: "nullish",    inline: true,    zod: {      implementation: [],      references: [],    },  },};module.exports = options;デフォルトの設定では以下のようにzodSchemaが出力されます。
CREATE TABLE `my_todo_list` (  `id` int NOT NULL AUTO_INCREMENT,  `task` varchar(255) NOT NULL,  `description` text,  `due_date` date DEFAULT NULL,  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ciexport const myTodoListSchema = z.object({  id: z.number(),  task: z.string(),  description: z.string().nullish(),  due_date: z.date().nullish(),  created_at: z.date().nullish(),  updated_at: z.date().nullish(),});format
schema名のフォーマットを指定します。
- camel - キャメルケース(デフォルト)
 - pascal - パスカルケース
 - snake - スネークケース
 - original - 元のテーブル名をそのまま使用
 
prefix
schema名の先頭に付与する文字列を指定します。(デフォルトは空文字)
suffix
schema名の末尾に付与する文字列を指定します。(デフォルトはSchema)
replacements
schema名の置換を行います。
string[][]形式で、置換前と置換後の文字列を指定します。(複数指定可)(デフォルトは空配列)
nullType
MySQLでNOT NULLではないカラムに対して、どのような型を使用するかを指定します。
- nullish - 
null | undefinedを許容する型を使用(デフォルト) - nullable - 
nullを許容する型を使用 
inline
schemaをインラインで定義するかどうかを指定します。(デフォルトはtrue)
inlineをfalseにすると、schemaを別ファイルに出力します。
以下、別ファイルに出力する例。
import { z } from "zod";import { globalSchema } from "./globalSchema";
export const myTodoListSchema = z.object({  id: globalSchema.mysqlINT,  task: globalSchema.mysqlVARCHAR,  description: globalSchema.mysqlTEXT.nullish(),  due_date: globalSchema.mysqlDATE.nullish(),  created_at: globalSchema.mysqlTIMESTAMP.nullish(),  updated_at: globalSchema.mysqlTIMESTAMP.nullish(),});import { z } from "zod";export const globalSchema = {  mysqlINT: z.number(),  mysqlVARCHAR: z.string(),  mysqlTINYINT: z.number(),  mysqlTIMESTAMP: z.date(),  mysqlTEXT: z.string(),  mysqlDATE: z.date(),};別ファイルに出力することで、たとえばDATE型をstring型に変換したり、独自のzodSchemaを指定することが可能になります。refineなどを行いたい場合には便利かもしれません。
zod
schemaの実装を指定します。inlineがtrueの場合のみ有効です。
- implementation - schemaの実装を指定します。
string[][]形式で、実装するzodSchemaを指定します。(デフォルトは空配列) [MySQLTYPE, zodSchema]の形式で指定します。 
implementationに[[“DATE”, “z.string()“]]を指定した場合、z.date()となるところがz.string()となります。
export const myTodoListSchema = z.object({  id: z.number(),  task: z.string(),  description: z.string().nullish(),  due_date: z.string().nullish(), // z.date()がz.string()に変換される  created_at: z.date().nullish(),  updated_at: z.date().nullish(),});- references - schemaの参照を指定します。
string[][]形式で、参照するzodSchemaを指定します。(デフォルトは空配列)inlineがfalseの場合のみ有効です。 
referencesに[[“DATE”, “mysqlDate”]]と指定すると、下記のような出力となります。
export const myTodoListSchema = z.object({  id: globalSchema.mysqlINT,  task: globalSchema.mysqlVARCHAR,  description: globalSchema.mysqlTEXT.nullish(),  due_date: globalSchema.mySqlDateSchema.nullish(), // globalSchema.mySqlDateSchemaに変換される  created_at: globalSchema.mysqlTIMESTAMP.nullish(),  updated_at: globalSchema.mysqlTIMESTAMP.nullish(),});テーブル名の変換
Schema名の変換については、Typeと同じです。Typeの変換手順を参照してください。
まとめ
独自実装した型を使用したい場合に、referenceやimplementationを使用することで、変換を行うことができます。