From dcda90c55c12ca50887a43625427ce093e7225e0 Mon Sep 17 00:00:00 2001 From: timsuchanek Date: Thu, 7 Nov 2019 15:29:36 +0100 Subject: [PATCH] Closes prisma/prisma2#254 --- packages/engine-core/src/NodeEngine.ts | 10 +++++----- .../photon/src/__tests__/generation/generator.test.ts | 1 + packages/photon/src/generation/TSClient.ts | 11 ++--------- packages/photon/src/generation/generateClient.ts | 11 ++++++----- packages/photon/src/utils/generateInFolder.ts | 1 + 5 files changed, 15 insertions(+), 19 deletions(-) diff --git a/packages/engine-core/src/NodeEngine.ts b/packages/engine-core/src/NodeEngine.ts index 5bbc7c4d5e3a..cc091c8574c2 100644 --- a/packages/engine-core/src/NodeEngine.ts +++ b/packages/engine-core/src/NodeEngine.ts @@ -25,7 +25,7 @@ export interface DatasourceOverwrite { export interface EngineConfig { cwd?: string - datamodel: string + datamodelPath: string debug?: boolean prismaPath?: string fetcher?: (query: string) => Promise<{ data?: any; error?: any }> @@ -60,7 +60,7 @@ export class NodeEngine extends Engine { managementApiEnabled: boolean = false datamodelJson?: string cwd: string - datamodel: string + datamodelPath: string prismaPath?: string url: string ready: boolean = false @@ -76,11 +76,11 @@ export class NodeEngine extends Engine { lastError?: RustLog startPromise?: Promise - constructor({ cwd, datamodel, prismaPath, generator, datasources, ...args }: EngineConfig) { + constructor({ cwd, datamodelPath, prismaPath, generator, datasources, ...args }: EngineConfig) { super() this.cwd = this.resolveCwd(cwd) this.debug = args.debug || false - this.datamodel = datamodel + this.datamodelPath = datamodelPath this.prismaPath = prismaPath this.platform = process.env.PRISMA_QUERY_ENGINE_BINARY this.generator = generator @@ -283,7 +283,7 @@ ${chalk.dim("In case we're mistaken, please report this to us 🙏.")}`) this.port = await this.getFreePort() const env: any = { - PRISMA_DML: this.datamodel, + PRISMA_DML_PATH: this.datamodelPath, PORT: String(this.port), RUST_BACKTRACE: '1', RUST_LOG: 'info', diff --git a/packages/photon/src/__tests__/generation/generator.test.ts b/packages/photon/src/__tests__/generation/generator.test.ts index 20553c54edfc..def4253b59f4 100644 --- a/packages/photon/src/__tests__/generation/generator.test.ts +++ b/packages/photon/src/__tests__/generation/generator.test.ts @@ -78,6 +78,7 @@ describe('generator', () => { "index.d.ts", "index.js", "runtime", + "schema.prisma", ] `) generator.stop() diff --git a/packages/photon/src/generation/TSClient.ts b/packages/photon/src/generation/TSClient.ts index 39f0cbda10eb..5149a2a00028 100644 --- a/packages/photon/src/generation/TSClient.ts +++ b/packages/photon/src/generation/TSClient.ts @@ -48,6 +48,7 @@ const commonCode = (runtimePath: string, version?: string) => `import { */ import path = require('path') +import fs = require('fs') const debug = debugLib('photon') @@ -133,7 +134,6 @@ class PhotonFetcher { interface TSClientOptions { version?: string document: DMMF.Document - datamodel: string runtimePath: string browser?: boolean datasources: InternalDatasource[] @@ -147,7 +147,6 @@ interface TSClientOptions { export class TSClient { protected readonly dmmf: DMMFClass protected readonly document: DMMF.Document - protected readonly datamodel: string protected readonly runtimePath: string protected readonly browser: boolean protected readonly outputDir: string @@ -159,7 +158,6 @@ export class TSClient { protected readonly schemaDir?: string constructor({ document, - datamodel, runtimePath, browser = false, datasources, @@ -170,7 +168,6 @@ export class TSClient { outputDir, }: TSClientOptions) { this.document = document - this.datamodel = datamodel this.runtimePath = runtimePath this.browser = browser this.internalDatasources = datasources @@ -199,7 +196,6 @@ ${this.platforms ? this.platforms.map(p => `path.join(__dirname, 'runtime/query- ${new PhotonClientClass( this.dmmf, - this.datamodel, this.internalDatasources, this.outputDir, this.browser, @@ -261,7 +257,6 @@ ${indent(sources.map(s => `${s.name}?: string`).join('\n'), 2)} class PhotonClientClass { constructor( protected readonly dmmf: DMMFClass, - protected readonly datamodel: string, protected readonly internalDatasources: InternalDatasource[], protected readonly outputDir: string, protected readonly browser?: boolean, @@ -303,7 +298,6 @@ export class Photon { private fetcher: PhotonFetcher private readonly dmmf: DMMFClass private readonly engine: Engine - private readonly datamodel: string private connectionPromise?: Promise constructor(options: PhotonOptions = {}) { const useDebug = options.debug === true ? true : typeof options.debug === 'object' ? Boolean(options.debug.library) : false @@ -313,7 +307,6 @@ export class Photon { const debugEngine = options.debug === true ? true : typeof options.debug === 'object' ? Boolean(options.debug.engine) : false // datamodel = datamodel without datasources + printed datasources - this.datamodel = ${JSON.stringify(this.datamodel)} const predefinedDatasources = ${ this.sqliteDatasourceOverrides @@ -330,7 +323,7 @@ export class Photon { this.engine = new Engine({ cwd: engineConfig.cwd || ${getRelativePathResolveStatement(this.outputDir, this.cwd)}, debug: debugEngine, - datamodel: this.datamodel, + datamodelPath: path.resolve(__dirname, 'schema.prisma'), prismaPath: engineConfig.binaryPath || undefined, datasources, generator: ${this.generator ? JSON.stringify(this.generator) : 'undefined'}, diff --git a/packages/photon/src/generation/generateClient.ts b/packages/photon/src/generation/generateClient.ts index ddd798b58651..347f2fab17b9 100644 --- a/packages/photon/src/generation/generateClient.ts +++ b/packages/photon/src/generation/generateClient.ts @@ -30,7 +30,7 @@ const copyFile = promisify(fs.copyFile) export interface GenerateClientOptions { datamodel: string - datamodelPath?: string + datamodelPath: string browser?: boolean schemaDir?: string transpile?: boolean @@ -68,7 +68,6 @@ export async function buildClient({ const client = new TSClient({ document, - datamodel, runtimePath, browser, datasources: resolveDatasources(datasources, schemaDir, outputDir), @@ -163,13 +162,13 @@ export async function generateClient({ runtimePath = runtimePath || './runtime' const { photonDmmf, fileMap } = await buildClient({ datamodel, + datamodelPath, schemaDir, transpile, runtimePath, browser, outputDir, generator, - datamodelPath, version, dmmf, datasources, @@ -193,7 +192,7 @@ export async function generateClient({ }), ) const inputDir = testMode - ? eval(`require('path').join(__dirname, '../../runtime')`) + ? eval(`require('path').join(__dirname, '../../runtime')`) // tslint:disable-line : eval(`require('path').join(__dirname, '../runtime')`) // tslint:disable-line await copy({ @@ -215,7 +214,9 @@ export async function generateClient({ await copyFile(filePath, target) } - await writeFile(path.join(outputDir, '/runtime/index.d.ts'), backup) + await copyFile(datamodelPath, path.join(outputDir, 'schema.prisma')) + + await writeFile(path.join(outputDir, 'runtime/index.d.ts'), backup) } const backup = `export { DMMF } from './dmmf-types' diff --git a/packages/photon/src/utils/generateInFolder.ts b/packages/photon/src/utils/generateInFolder.ts index d117dbdad2d2..98d8b434ce01 100644 --- a/packages/photon/src/utils/generateInFolder.ts +++ b/packages/photon/src/utils/generateInFolder.ts @@ -47,6 +47,7 @@ export async function generateInFolder({ runtimePath: useLocalRuntime ? path.relative(outputDir, path.join(__dirname, '../runtime')) : undefined, transpile, testMode: true, + datamodelPath: schemaPath, }) const after = performance.now()