import { z } from 'zod'; import { ModelDef, ModelFieldDef, ProviderName } from './types'; export interface BaseModelConfig { name: string; object: string; schema: TSchema; fields: Record; relations?: ModelDef['relations']; } export function createModelFactory(provider: ProviderName) { return function model(cfg: BaseModelConfig): ModelDef { return { name: cfg.name, object: cfg.object, schema: cfg.schema, fields: cfg.fields, relations: cfg.relations, provider, }; }; } export interface ModelRegistry { register(model: ModelDef): void; get(name: string): ModelDef | undefined; } export function createRegistry(): ModelRegistry { const byName = new Map>(); return { register(model) { byName.set(model.name, model); }, get(name) { return byName.get(name); }, }; }