UNPKG

@dans98/prismabox

Version:

Typebox generator for prisma schema

38 lines (32 loc) 1.14 kB
import type { DMMF } from "@prisma/generator-helper"; import { extractAnnotations } from "../annotations/annotations"; import { generateTypeboxOptions } from "../annotations/options"; import { getConfig } from "../config"; import type { ProcessedModel } from "../model"; import { makeUnion } from "./wrappers/union"; export const processedEnums: ProcessedModel[] = []; export function processEnums( enums: DMMF.DatamodelEnum[] | Readonly<DMMF.DatamodelEnum[]>, ) { for (const e of enums) { const stringRepresentation = stringifyEnum(e); if (stringRepresentation) { processedEnums.push({ name: e.name, stringRepresentation, }); } } Object.freeze(processedEnums); } export function stringifyEnum(data: DMMF.DatamodelEnum) { const annotations = extractAnnotations(data.documentation); if (annotations.isHidden) return undefined; const variantsString = data.values.map( (v) => `${getConfig().typeboxImportVariableName}.Literal('${v.name}')`, ); return makeUnion( variantsString, generateTypeboxOptions({ input: annotations }), ); }