UNPKG

zod-dbs

Version:

Opinionated Zod schema generator for databases

52 lines 3.07 kB
import type { ZodDbsColumn, ZodDbsColumnType, ZodDbsConfig, ZodDbsRenderer, ZodDbsTable } from 'zod-dbs-core'; import type { ZodDbsColumnBaseRenderModel, ZodDbsColumnBaseType, ZodDbsColumnRenderModel, ZodDbsImport, ZodDbsTableRenderModel } from './types.js'; export interface ZodDbsRendererOptions { onColumnModelCreated?: (model: ZodDbsColumnRenderModel) => ZodDbsColumnRenderModel | Promise<ZodDbsColumnRenderModel>; onTableModelCreated?: (model: ZodDbsTableRenderModel) => ZodDbsTableRenderModel | Promise<ZodDbsTableRenderModel>; } export interface ZodDbsRenderZodTypeParams { zodType: ZodDbsColumnType; config: ZodDbsConfig; isReadField: boolean; } export declare abstract class ZodBaseRenderer implements ZodDbsRenderer { name: string; protected options: ZodDbsRendererOptions; constructor(options?: ZodDbsRendererOptions); protected getSchemaTemplateName(model: ZodDbsTableRenderModel, config: ZodDbsConfig): string; /** * Returns the base type for a ZodDbsColumnType. * Used to determine how to render the Zod type. * E.g. minLen/maxLen constraints are only applied to string/number types. */ protected getBaseType(type: ZodDbsColumnType): ZodDbsColumnBaseType; /** * Takes a ZodDbsColumnType and returns the corresponding Zod type string. * e.g 'z.string()' for 'string', 'z.number()' for 'number'. */ protected renderZodType({ zodType, config, isReadField, }: ZodDbsRenderZodTypeParams): string; protected renderReadField(column: ZodDbsColumnBaseRenderModel, config: ZodDbsConfig): string; protected renderWriteField(column: ZodDbsColumnBaseRenderModel, config: ZodDbsConfig): string; protected createColumnModel(column: ZodDbsColumn, config: ZodDbsConfig): ZodDbsColumnRenderModel; protected createEnums(columns: ZodDbsColumnRenderModel[], config: ZodDbsConfig): { constantName: string; typeName: string; values: { value: string; last: boolean; }[]; }[]; protected createObjectModels(table: ZodDbsTable, config: ZodDbsConfig): Promise<ZodDbsTableRenderModel[]>; protected createObjectSchemaImports(columns: ZodDbsColumnRenderModel[], config: ZodDbsConfig): ZodDbsImport[] | undefined; protected createJsonSchemaImports(columns: ZodDbsColumnRenderModel[], config: ZodDbsConfig): ZodDbsImport[] | undefined; protected createWritableColumns(columns: ZodDbsColumnRenderModel[]): ZodDbsColumnRenderModel[]; protected createReadableColumns(table: ZodDbsTable, config: ZodDbsConfig): Promise<ZodDbsColumnRenderModel[]>; protected createTableModel(table: ZodDbsTable, config: ZodDbsConfig): Promise<ZodDbsTableRenderModel>; protected renderTemplate(templateName: string, model: ZodDbsTableRenderModel): Promise<string>; renderSchemaFile(table: ZodDbsTable, config: ZodDbsConfig): Promise<string>; renderSchemaFiles(table: ZodDbsTable, config: ZodDbsConfig): Promise<{ name: string; content: string; }[]>; } //# sourceMappingURL=ZodBaseRenderer.d.ts.map