From 510dbc2c731629372898b80bd8dc7b055a0abb59 Mon Sep 17 00:00:00 2001 From: timsuchanek Date: Thu, 15 Aug 2019 14:58:53 +0200 Subject: [PATCH] integrate new photon & lift --- cli/cli/src/getCwd.ts | 20 +- cli/introspection/package.json | 5 +- cli/introspection/src/commands/Init.ts | 8 +- cli/introspection/src/commands/Introspect.ts | 5 +- cli/introspection/src/introspect/util.ts | 3 - cli/introspection/src/test-introspection.ts | 24 + cli/introspection/yarn.lock | 450 ++++++++++++++++-- cli/prisma2/package.json | 14 +- cli/prisma2/src/Generate.ts | 5 +- cli/prisma2/src/__tests__/integrate.test.ts | 3 +- cli/prisma2/src/bin.ts | 3 +- .../src/{getConfig.ts => getDatamodel.ts} | 7 - cli/prisma2/yarn.lock | 59 ++- 13 files changed, 491 insertions(+), 115 deletions(-) create mode 100644 cli/introspection/src/test-introspection.ts rename cli/prisma2/src/{getConfig.ts => getDatamodel.ts} (69%) diff --git a/cli/cli/src/getCwd.ts b/cli/cli/src/getCwd.ts index 15f2d1989907..d98a92101285 100644 --- a/cli/cli/src/getCwd.ts +++ b/cli/cli/src/getCwd.ts @@ -5,7 +5,6 @@ import path from 'path' const exists = promisify(fs.exists) const readFile = promisify(fs.readFile) -const datamodelFile = 'project.prisma' const schemaFile = 'schema.prisma' /** @@ -15,25 +14,17 @@ const schemaFile = 'schema.prisma' */ export async function getCwd(): Promise { const cwd = process.cwd() - const [ - datamodelCwdExists, - schemaCwdExists, - prismaFolderExists, - prismaDatamodelExists, - prismaSchemaExists - ] = await Promise.all([ - exists(path.join(cwd, datamodelFile)), + const [schemaCwdExists, prismaFolderExists, prismaSchemaExists] = await Promise.all([ exists(path.join(cwd, schemaFile)), exists(path.join(cwd, 'prisma/')), - exists(path.join(cwd, 'prisma/', datamodelFile)), exists(path.join(cwd, 'prisma/', schemaFile)), ]) - if (datamodelCwdExists || schemaCwdExists) { + if (schemaCwdExists) { return cwd } - if (prismaFolderExists || prismaDatamodelExists || prismaSchemaExists) { + if (prismaFolderExists || prismaSchemaExists) { return path.join(cwd, 'prisma/') } @@ -42,10 +33,7 @@ export async function getCwd(): Promise { export async function getDatamodel(): Promise { const cwd = await getCwd() - let datamodelPath = path.join(cwd, datamodelFile) - if (!(await exists(datamodelPath))) { - datamodelPath = path.join(cwd, schemaFile) - } + const datamodelPath = path.join(cwd, schemaFile) if (!(await exists(datamodelPath))) { throw new Error(`Could not find ${datamodelPath}`) } diff --git a/cli/introspection/package.json b/cli/introspection/package.json index 5bbb3bc3cd02..c616b2ec9e9b 100644 --- a/cli/introspection/package.json +++ b/cli/introspection/package.json @@ -1,12 +1,13 @@ { "name": "@prisma/introspection", - "version": "0.0.39", + "version": "0.0.52", "main": "dist/index.js", "types": "dist/index.d.ts", "license": "Apache-2.0", "devDependencies": { "@prisma/cli": "^0.0.42", - "@prisma/lift": "^0.1.21", + "@prisma/lift": "^0.2.0", + "@prisma/photon": "^0.2.0", "@types/dotenv": "^6.1.1", "@types/figures": "^3.0.1", "@types/fs-extra": "^7.0.0", diff --git a/cli/introspection/src/commands/Init.ts b/cli/introspection/src/commands/Init.ts index 7ca4c46c215e..7494cf4ab540 100644 --- a/cli/introspection/src/commands/Init.ts +++ b/cli/introspection/src/commands/Init.ts @@ -1,5 +1,4 @@ import { Command, Env, arg, format } from '@prisma/cli' -import { LiftEngine } from '@prisma/lift' import { isError } from 'util' import { promptInteractively } from '../prompt' import { introspect } from '../introspect/util' @@ -12,16 +11,11 @@ import { mkdirpSync } from 'fs-extra' import { InitPromptResult } from '../types' export class Init implements Command { - lift: LiftEngine static new(env: Env): Init { return new Init(env) } - private constructor(private readonly env: Env) { - this.lift = new LiftEngine({ - projectDir: env.cwd, - }) - } + private constructor(private readonly env: Env) {} async parse(argv: string[]): Promise { // parse the arguments according to the spec diff --git a/cli/introspection/src/commands/Introspect.ts b/cli/introspection/src/commands/Introspect.ts index 4fdddc9896ad..ec02e3122f70 100644 --- a/cli/introspection/src/commands/Introspect.ts +++ b/cli/introspection/src/commands/Introspect.ts @@ -139,10 +139,7 @@ ${chalk.bold('Created 1 new file:')} Prisma DML datamodel (derived from existing } getExistingDatamodel(): string | undefined { - let datamodelPath = path.join(this.env.cwd, 'project.prisma') - if (!fs.existsSync(datamodelPath)) { - datamodelPath = path.join(this.env.cwd, 'schema.prisma') - } + const datamodelPath = path.join(this.env.cwd, 'schema.prisma') if (!fs.existsSync(datamodelPath)) { return undefined } diff --git a/cli/introspection/src/introspect/util.ts b/cli/introspection/src/introspect/util.ts index b89d93b11bbd..758ae812bae4 100644 --- a/cli/introspection/src/introspect/util.ts +++ b/cli/introspection/src/introspect/util.ts @@ -138,9 +138,6 @@ export async function getDatabaseSchemas(connector: IConnector): Promise=0.10.0: +whatwg-fetch@3.0.0, whatwg-fetch@>=0.10.0: version "3.0.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== @@ -5564,6 +5915,11 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +wtfnode@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/wtfnode/-/wtfnode-0.8.0.tgz#26a1a6b8e07727d7ed29dacc6708bea4647ccd20" + integrity sha512-A5jm/0REykxUac1q4Q5kv+hDIiacvqVpwIoXzCQcRL7syeEKucVVOxyLLrt+jIiZoXfla3lnsxUw/cmWXIaGWA== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" diff --git a/cli/prisma2/package.json b/cli/prisma2/package.json index dfeaad0cf440..c3574ffbb4ab 100644 --- a/cli/prisma2/package.json +++ b/cli/prisma2/package.json @@ -1,6 +1,6 @@ { "name": "prisma2", - "version": "2.0.0-preview-6.1", + "version": "2.0.0-alpha.113", "main": "dist/index.js", "types": "dist/index.d.ts", "repository": "git@github.com:prisma/prisma2-cli.git", @@ -20,14 +20,14 @@ "prisma2": "build/index.js" }, "prisma": { - "version": "4d17a0639165e5a8e54c7e5cf538ffdf114edb53" + "version": "33e5fc84b6bd61602f8d634beb558230ca3e3054" }, "devDependencies": { - "@prisma/cli": "^0.0.43", + "@prisma/cli": "^0.0.46", "@prisma/fetch-engine": "^0.1.6", - "@prisma/introspection": "0.0.48", - "@prisma/lift": "0.1.26", - "@prisma/photon": "^0.1.57", + "@prisma/introspection": "0.0.52", + "@prisma/lift": "0.2.0", + "@prisma/photon": "^0.2.0", "@sentry/node": "5", "@types/mocha": "^5.2.7", "@zeit/ncc": "^0.18.5", @@ -66,4 +66,4 @@ "**/**/prisma-datamodel": "1.36.0-alpha.8", "**/**/**/prisma-datamodel": "1.36.0-alpha.8" } -} +} \ No newline at end of file diff --git a/cli/prisma2/src/Generate.ts b/cli/prisma2/src/Generate.ts index 5580578d3651..705b0e682676 100644 --- a/cli/prisma2/src/Generate.ts +++ b/cli/prisma2/src/Generate.ts @@ -1,8 +1,9 @@ import { Command, Env, format, HelpError, Dictionary, GeneratorDefinitionWithPackage } from '@prisma/cli' import chalk from 'chalk' -import { missingGeneratorMessage, getCompiledGenerators } from '@prisma/lift' +import { missingGeneratorMessage } from '@prisma/lift' +import { getCompiledGenerators } from '@prisma/photon' import { formatms } from './utils/formatms' -import { getDatamodel } from './getConfig' +import { getDatamodel } from './getDatamodel' /** * $ prisma migrate new diff --git a/cli/prisma2/src/__tests__/integrate.test.ts b/cli/prisma2/src/__tests__/integrate.test.ts index 10fdc148c769..b1a930d80bfa 100644 --- a/cli/prisma2/src/__tests__/integrate.test.ts +++ b/cli/prisma2/src/__tests__/integrate.test.ts @@ -1,6 +1,5 @@ import { PostgresConnector } from 'prisma-db-introspection' -import { generateClient } from '@prisma/photon' -import { isdlToDatamodel2 } from '@prisma/lift' +import { generateClient, isdlToDatamodel2 } from '@prisma/photon' import { ISDL } from 'prisma-datamodel' import { join, dirname } from 'path' import mkdir from 'make-dir' diff --git a/cli/prisma2/src/bin.ts b/cli/prisma2/src/bin.ts index 4d3a558cf96f..49f0543e88d6 100755 --- a/cli/prisma2/src/bin.ts +++ b/cli/prisma2/src/bin.ts @@ -21,7 +21,8 @@ process.on('unhandledRejection', e => { * Dependencies */ import { isError, HelpError, Env, getCwd } from '@prisma/cli' -import { LiftCommand, LiftSave, LiftUp, LiftDown, LiftWatch, Converter } from '@prisma/lift' +import { LiftCommand, LiftSave, LiftUp, LiftDown, LiftWatch } from '@prisma/lift' +import { Converter } from '@prisma/photon' import { CLI } from './CLI' import { Introspect, Init } from '@prisma/introspection' import { Version } from './Version' diff --git a/cli/prisma2/src/getConfig.ts b/cli/prisma2/src/getDatamodel.ts similarity index 69% rename from cli/prisma2/src/getConfig.ts rename to cli/prisma2/src/getDatamodel.ts index 024f720529a9..eb4cc8c349f8 100644 --- a/cli/prisma2/src/getConfig.ts +++ b/cli/prisma2/src/getDatamodel.ts @@ -1,17 +1,10 @@ import fs from 'fs' import path from 'path' import { promisify } from 'util' -import { LiftEngine } from '@prisma/lift' const readFile = promisify(fs.readFile) const exists = promisify(fs.exists) -export async function getConfig(cwd: string) { - const datamodel = await getDatamodel(cwd) - const engine = new LiftEngine({ projectDir: cwd }) - return engine.getConfig({ datamodel }) -} - export async function getDatamodel(cwd: string): Promise { let datamodelPath = path.join(cwd, 'project.prisma') if (!(await exists(datamodelPath))) { diff --git a/cli/prisma2/yarn.lock b/cli/prisma2/yarn.lock index 3ea3ef4732d9..e3672b484b9c 100644 --- a/cli/prisma2/yarn.lock +++ b/cli/prisma2/yarn.lock @@ -308,7 +308,16 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@prisma/cli@0.0.43", "@prisma/cli@^0.0.43": +"@prisma/cli@0.0.46", "@prisma/cli@^0.0.46": + version "0.0.46" + resolved "https://registry.yarnpkg.com/@prisma/cli/-/cli-0.0.46.tgz#dcf77887ba1840729e4c7c0d01c1fbed8c179064" + integrity sha512-OrymhOayv9joMbdXJdvQCOtZoYBG0UpNo8eTTUOpBMvWwDmWV+30DxLbrIWQylacS2LQDkapcm4no4fu3rUWGQ== + dependencies: + arg "^4.1.0" + chalk "^2.4.2" + strip-indent "^3.0.0" + +"@prisma/cli@^0.0.43": version "0.0.43" resolved "https://registry.yarnpkg.com/@prisma/cli/-/cli-0.0.43.tgz#a35da3765cd6050b99da140b70b24391e4b60b53" integrity sha512-zB/b6Vz8CxVY+TH9FlYsseZ+beF/1bAKeMVg8mRQmcZzkeQ9unvZAbfFWMYxkb1+LlF/JnH2uKi8+deVO8OcdQ== @@ -381,10 +390,10 @@ dependencies: debug "^4.1.1" -"@prisma/introspection@0.0.48": - version "0.0.48" - resolved "https://registry.yarnpkg.com/@prisma/introspection/-/introspection-0.0.48.tgz#4161734d708d4c676bc7c2d7b01c75acd44e451f" - integrity sha512-Gof5QX34wbPJTW3Pj+RJxViGZWs2YKHzMM1jrgCq10MMIMG87rr02pupoucpN8SMhNIxVpm+z+Up2Wm4vEIKYw== +"@prisma/introspection@0.0.52": + version "0.0.52" + resolved "https://registry.yarnpkg.com/@prisma/introspection/-/introspection-0.0.52.tgz#5c0c17cceb2da47bc6a84d0d1a0bff7939c0f1e0" + integrity sha512-Y0VBsQZGNZnVeTTB7tmL8gujYYspfIkyXnNsdoenxcV4dbfK/uNJ6r1KeueDL25lPRPpOynBLzHqfpanfX88DQ== dependencies: ajv "^6.10.0" chalk "^2.4.2" @@ -407,10 +416,10 @@ tar "^4.4.10" tmp "^0.1.0" -"@prisma/lift@0.1.26": - version "0.1.26" - resolved "https://registry.yarnpkg.com/@prisma/lift/-/lift-0.1.26.tgz#fcbe9611de31c3a28911e240fadbace8f870969d" - integrity sha512-8bFF4ywpFBNLbFdEE2uMJ+6P96UjDAu5Q2pR0fO850GbyEC6ag1/wOej6NSbYhMNHe+sisLWNQcu5DxjaM2o2Q== +"@prisma/lift@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@prisma/lift/-/lift-0.2.0.tgz#c52f8d1250459b778afd623fe8883baa12cceb10" + integrity sha512-G7qUjsd0MRAGfxUW6++THNb/wQXfC0fsul07X9F+wBJY4YUuDlMflf+LV+oTesPtYQimsMmSHLZrA41ZJ6oA3w== dependencies: "@prisma/fetch-engine" "^0.1.3" "@prisma/get-platform" "^0.0.3" @@ -427,7 +436,6 @@ execa "^1.0.0" fast-equals "^2.0.0" fast-memoize "^2.5.1" - fs-extra "^8.0.1" get-port "^5.0.0" get-stream "^5.1.0" git-user-email "^0.2.2" @@ -456,20 +464,21 @@ dependencies: tslib "^1.9.3" -"@prisma/photon@^0.1.57": - version "0.1.57" - resolved "https://registry.yarnpkg.com/@prisma/photon/-/photon-0.1.57.tgz#4dca36d8ff636b9dc7a9453cf161d458cd613736" - integrity sha512-iL6+0wfJ7xDS7OK67YRUx7CHlPcFdX30U0u1tbm6DHBNS7qReVbsBgmOO+RD9/EVbwaTfbYHLUmM6QovWm+pmQ== +"@prisma/photon@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@prisma/photon/-/photon-0.2.0.tgz#c2643541fbe67943a7c0e5101dc539539226347a" + integrity sha512-jv8LRbs8xuGwUwZHIwaNPGEB7laU05s+r1ygywXQhyIK1ny+ZAmEn4HTc9bRnu6ukz4M5IOyOw9UXdl47lNuXw== dependencies: "@apexearth/copy" "^1.4.2" - "@prisma/cli" "0.0.43" + "@prisma/cli" "0.0.46" "@prisma/engine-core" "0.0.84" "@prisma/fetch-engine" "^0.1.6" chalk "^2.4.2" cpy "^7.3.0" dotenv "^8.0.0" - execa "^2.0.3" + execa "^2.0.4" flat-map-polyfill "^0.3.8" + fs-extra "^8.1.0" fs-monkey "^0.3.3" indent-string "^4.0.0" is-obj "^2.0.0" @@ -478,6 +487,7 @@ make-dir "^3.0.0" node-fetch "^2.6.0" pluralize "^8.0.0" + prisma-datamodel "^1.36.0-test.2" set-value "^3.0.1" stacktrace-parser "0.1.6" strip-ansi "^5.2.0" @@ -1930,6 +1940,21 @@ execa@^2.0.3: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/execa/-/execa-2.0.4.tgz#2f5cc589c81db316628627004ea4e37b93391d8e" + integrity sha512-VcQfhuGD51vQUQtKIq2fjGDLDbL6N1DTQVpYzxZ7LPIXw3HqTuIz6uxRmpV1qf8i31LHf2kjiaGI+GdHwRgbnQ== + dependencies: + cross-spawn "^6.0.5" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2221,7 +2246,7 @@ fs-extra@^7.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.0.1: +fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==