single-source-of-truth
Version:
Use Zod schemas to your generate Prisma schema
21 lines (15 loc) • 680 B
text/typescript
import Cursor from 'code-block-writer';
import type { Standard } from '~/standard.js';
import { buildFieldLine } from './field.js';
export function buildModelBlock(model: Standard.Model) {
const cursor = new Cursor({ indentNumberOfSpaces: 2 });
cursor.write(`model ${model.name}`).block(() => {
for (const field of model.fields) cursor.writeLine(buildFieldLine(field));
if (model.attributes.id?.length)
cursor.writeLine(`@@id([${model.attributes.id.join(', ')}])`);
if (model.attributes.unique?.length)
for (const unique of model.attributes.unique)
cursor.writeLine(`@@unique([${unique.join(', ')}])`);
});
return cursor.toString();
}