buildDMMF.ts•1.01 kB
import {
  dmmfToRuntimeDataModel,
  PrunedRuntimeDataModel,
  pruneRuntimeDataModel,
  RuntimeDataModel,
} from '@prisma/client-common'
import type * as DMMF from '@prisma/dmmf'
import { escapeJson } from '../TSClient/helpers'
import { TSClientOptions } from '../TSClient/TSClient'
/**
 * Given DMMF models, computes runtime datamodel from it and embeds
 * it into generated client.
 */
export function buildRuntimeDataModel(datamodel: DMMF.Datamodel, runtimeName: TSClientOptions['runtimeName']) {
  const runtimeDataModel = dmmfToRuntimeDataModel(datamodel)
  let prunedDataModel: PrunedRuntimeDataModel | RuntimeDataModel
  if (runtimeName === 'wasm-engine-edge' || runtimeName === 'wasm-compiler-edge' || runtimeName === 'client') {
    prunedDataModel = pruneRuntimeDataModel(runtimeDataModel)
  } else {
    prunedDataModel = runtimeDataModel
  }
  const datamodelString = escapeJson(JSON.stringify(prunedDataModel))
  return `
config.runtimeDataModel = JSON.parse(${JSON.stringify(datamodelString)})`
}