UNPKG

single-source-of-truth

Version:
53 lines 1.65 kB
import Cursor from 'code-block-writer'; export function buildFieldLine(field) { const cursor = new Cursor({}); cursor.write(field.name).space(); cursor.write(resolvePrismaType(field)); if (field.attributes.list) cursor.write('[]'); if (field.attributes.nullable) cursor.write('?'); if (field.attributes.id) cursor.space().write('@id'); if (field.attributes.unique) cursor.space().write('@unique'); const relation = buildFieldRelationAttribute(field.attributes); if (relation) cursor.space().write(relation); return cursor.toString(); } function resolvePrismaType(field) { switch (field.type) { case 'string': return 'String'; case 'integer': return 'Int'; case 'float': return 'Float'; case 'boolean': return 'Boolean'; case 'date': return 'DateTime'; case 'bigint': return 'BigInt'; case 'object': return 'Json'; default: return field.type; } } function buildFieldRelationAttribute(attributes) { const parts = []; if (attributes.name) parts.push(`name:"${attributes.name}"`); if (attributes.references) { const fields = attributes.references.map((r) => r[0]); parts.push(`fields:[${fields.join(',')}]`); const references = attributes.references.map((r) => r[1]); parts.push(`references:[${references.join(',')}]`); } if (parts.length === 0) return null; return `@relation(${parts.join(',')})`; } //# sourceMappingURL=field.js.map