zod-dbs
Version:
Opinionated Zod schema generator for databases
52 lines • 3.07 kB
TypeScript
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