@dans98/prismabox
Version:
Typebox generator for prisma schema
32 lines (27 loc) • 885 B
text/typescript
import { getConfig } from "../config";
import { type extractAnnotations, isOptionsVariant } from "./annotations";
export function generateTypeboxOptions({
input,
exludeAdditionalProperties = false,
}: {
input?: ReturnType<typeof extractAnnotations>;
exludeAdditionalProperties?: boolean;
} = {}): string {
const stringifiedOptions: string[] = [];
for (const annotation of input?.annotations ?? []) {
if (isOptionsVariant(annotation)) {
stringifiedOptions.push(annotation.value);
}
}
if (!exludeAdditionalProperties) {
stringifiedOptions.push(
`additionalProperties: ${getConfig().additionalProperties}`,
);
}
if (input?.description) {
stringifiedOptions.push(`description: \`${input.description}\``);
}
return stringifiedOptions.length > 0
? `{${stringifiedOptions.join(",")}}`
: "";
}