Skip to content

Commit

Permalink
refactor: consistently use binaryTarget term (prisma#21659)
Browse files Browse the repository at this point in the history
Right now we use the term "platform" in different contexts to signify
different things, and use either "platform" or "binaryTarget" in the
same context to mean the same thing. This commit consolidates the usage
of the latter to just "binaryTarget" as it matches the user-facing API
in the form of the `binaryTargets` property in Prisma schema. Since it
is less ambiguous, it is easy to search and replace it later if we
decide on a different name.

Closes: prisma/team-orm#366

Co-authored-by: Joël Galeran <[email protected]>
  • Loading branch information
aqrln and Jolg42 authored Dec 13, 2023
1 parent 6c74040 commit f72bf3a
Show file tree
Hide file tree
Showing 53 changed files with 319 additions and 335 deletions.
8 changes: 4 additions & 4 deletions packages/cli/helpers/run-tests.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { enginesVersion } from '@prisma/engines'
import { download, getCacheDir } from '@prisma/fetch-engine'
import { getPlatform } from '@prisma/internals'
import { getBinaryTargetForCurrentPlatform } from '@prisma/internals'
import * as miniProxy from '@prisma/mini-proxy'
import execa from 'execa'
import { existsSync } from 'fs'
Expand Down Expand Up @@ -37,9 +37,9 @@ export async function main() {
* @returns an object to kill the process
*/
export async function startMiniProxy() {
const platform = await getPlatform()
const cacheDir = (await getCacheDir('master', enginesVersion, platform))!
const qePath = `${cacheDir}/query-engine${platform === 'windows' ? '.exe' : ''}`
const binaryTarget = await getBinaryTargetForCurrentPlatform()
const cacheDir = (await getCacheDir('master', enginesVersion, binaryTarget))!
const qePath = `${cacheDir}/query-engine${binaryTarget === 'windows' ? '.exe' : ''}`

if (existsSync(qePath) === false) {
await download({
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@
"@prisma/internals": "workspace:*",
"@prisma/migrate": "workspace:*",
"@prisma/mini-proxy": "0.9.4",
"@prisma/studio": "0.495.0",
"@prisma/studio-server": "0.495.0",
"@prisma/studio": "0.496.0",
"@prisma/studio-server": "0.496.0",
"@swc/core": "1.3.96",
"@swc/jest": "0.2.29",
"@types/debug": "4.1.12",
Expand Down
6 changes: 3 additions & 3 deletions packages/cli/src/Version.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { enginesVersion, getCliQueryEngineBinaryType } from '@prisma/engines'
import { getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform } from '@prisma/get-platform'
import type { Command } from '@prisma/internals'
import {
arg,
Expand Down Expand Up @@ -65,7 +65,7 @@ export class Version implements Command {

loadEnvFile({ printMessage: true })

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
const cliQueryEngineBinaryType = getCliQueryEngineBinaryType()

const [enginesMetaInfo, enginesMetaInfoErrors] = await getEnginesMetaInfo()
Expand All @@ -92,7 +92,7 @@ export class Version implements Command {
const rows = [
[packageJson.name, packageJson.version],
['@prisma/client', prismaClientVersion ?? 'Not found'],
['Computed binaryTarget', platform],
['Computed binaryTarget', binaryTarget],
['Operating System', os.platform()],
['Architecture', os.arch()],
['Node.js', process.version],
Expand Down
12 changes: 5 additions & 7 deletions packages/cli/src/__tests__/commands/Version.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { enginesVersion, getCliQueryEngineBinaryType } from '@prisma/engines'
import { BinaryType, download } from '@prisma/fetch-engine'
import { getPlatform, jestConsoleContext, jestContext } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, jestConsoleContext, jestContext } from '@prisma/get-platform'
import { engineEnvVarMap } from '@prisma/internals'
import { ensureDir } from 'fs-extra'
import path from 'path'
Expand Down Expand Up @@ -39,12 +39,11 @@ describe('version', () => {
// This Omits query-engine from the map
const { ['query-engine']: qe, ...envVarMap } = engineEnvVarMap

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()

for (const engine in envVarMap) {
const envVar = envVarMap[engine]
process.env[envVar] = binaryPaths[engine][platform]
// console.debug(`Setting ${envVar} to ${binaryPaths[engine][platform]}`)
process.env[envVar] = binaryPaths[engine][binaryTarget]
}

const data = await ctx.cli('--version')
Expand Down Expand Up @@ -84,12 +83,11 @@ describe('version', () => {
failSilent: false,
})

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
const { ['libquery-engine']: qe, ...envVarMap } = engineEnvVarMap
for (const engine in envVarMap) {
const envVar = envVarMap[engine]
process.env[envVar] = binaryPaths[engine][platform]
// console.debug(`Setting ${envVar} to ${binaryPaths[engine][platform]}`)
process.env[envVar] = binaryPaths[engine][binaryTarget]
}

const data = await ctx.cli('--version')
Expand Down
6 changes: 3 additions & 3 deletions packages/client/helpers/functional-test/run-tests.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { arg, BinaryType, getPlatform } from '@prisma/internals'
import { arg, BinaryType, getBinaryTargetForCurrentPlatform } from '@prisma/internals'
import * as miniProxy from '@prisma/mini-proxy'
import execa, { ExecaChildProcess } from 'execa'
import fs from 'fs'
Expand Down Expand Up @@ -259,8 +259,8 @@ async function getBinaryForMiniProxy(): Promise<string> {
}

const paths = await setupQueryEngine()
const platform = await getPlatform()
const qePath = paths[BinaryType.QueryEngineBinary]?.[platform]
const binaryTarget = await getBinaryTargetForCurrentPlatform()
const qePath = paths[BinaryType.QueryEngineBinary]?.[binaryTarget]

if (!qePath) {
throw new Error('Query Engine binary missing')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getNodeAPIName, getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -13,11 +13,13 @@ testIf(!(process.env.PRISMA_QUERY_ENGINE_BINARY || process.env.PRISMA_QUERY_ENGI

await generateTestClient()
const { PrismaClient } = require('./node_modules/@prisma/client')
const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
let binaryPath = path.join(
__dirname,
'node_modules/.prisma/client',
getClientEngineType() === ClientEngineType.Library ? getNodeAPIName(platform, 'fs') : `query-engine-${platform}`,
getClientEngineType() === ClientEngineType.Library
? getNodeAPIName(binaryTarget, 'fs')
: `query-engine-${binaryTarget}`,
)

if (process.platform === 'win32' && getClientEngineType() === ClientEngineType.Binary) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getNodeAPIName, getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -17,11 +17,11 @@ testIf(!process.env.PRISMA_QUERY_ENGINE_BINARY)('missing-engine-native-binaryTar

const { PrismaClient } = require('./node_modules/@prisma/client')

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
let binaryPath =
getClientEngineType() === ClientEngineType.Library
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(platform, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${platform}`)
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(binaryTarget, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${binaryTarget}`)

if (process.platform === 'win32') {
binaryPath += '.exe'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getNodeAPIName, getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -17,11 +17,11 @@ testIf(!process.env.PRISMA_QUERY_ENGINE_LIBRARY)('missing-engine-native-binaryTa

const { PrismaClient } = require('./node_modules/@prisma/client')

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
const binaryPath =
getClientEngineType() === ClientEngineType.Library
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(platform, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${platform}`)
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(binaryTarget, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${binaryTarget}`)
fs.unlinkSync(binaryPath)
const prisma = new PrismaClient({
log: [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getNodeAPIName, getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -17,11 +17,11 @@ testIf(!process.env.PRISMA_QUERY_ENGINE_BINARY)('missing-engine: binary', async

const { PrismaClient } = require('./node_modules/@prisma/client')

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
let binaryPath =
getClientEngineType() === ClientEngineType.Library
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(platform, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${platform}`)
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(binaryTarget, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${binaryTarget}`)

if (process.platform === 'win32') {
binaryPath += '.exe'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getNodeAPIName, getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -17,11 +17,11 @@ testIf(!process.env.PRISMA_QUERY_ENGINE_LIBRARY)('missing-engine: library', asyn

const { PrismaClient } = require('./node_modules/@prisma/client')

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
const binaryPath =
getClientEngineType() === ClientEngineType.Library
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(platform, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${platform}`)
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(binaryTarget, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${binaryTarget}`)
fs.unlinkSync(binaryPath)
const prisma = new PrismaClient({
log: [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getNodeAPIName, getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -10,11 +10,11 @@ testIf(!process.env.PRISMA_QUERY_ENGINE_LIBRARY && !process.env.PRISMA_QUERY_ENG
expect.assertions(1)
await generateTestClient()

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
let binaryPath =
getClientEngineType() === ClientEngineType.Library
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(platform, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${platform}`)
? path.join(__dirname, 'node_modules/.prisma/client', getNodeAPIName(binaryTarget, 'fs'))
: path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${binaryTarget}`)

if (process.platform === 'win32' && getClientEngineType() === ClientEngineType.Binary) {
binaryPath += '.exe'
Expand Down
6 changes: 3 additions & 3 deletions packages/client/src/__tests__/integration/happy/chmod/test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -10,9 +10,9 @@ const testIf = (condition: boolean) => (condition ? test : test.skip)
// Tests that no error is being thrown when the binary is manually set to chmod 644 because Client fixes that itself
testIf(process.platform !== 'win32')('chmod', async () => {
await generateTestClient()
const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()
if (getClientEngineType() !== ClientEngineType.Library) {
const binaryPath = path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${platform}`)
const binaryPath = path.join(__dirname, 'node_modules/.prisma/client', `query-engine-${binaryTarget}`)
fs.chmodSync(binaryPath, '644')
}
const { PrismaClient } = require('./node_modules/@prisma/client')
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getNodeAPIName, getPlatform } from '@prisma/get-platform'
import { getBinaryTargetForCurrentPlatform, getNodeAPIName } from '@prisma/get-platform'
import { ClientEngineType, getClientEngineType } from '@prisma/internals'
import fs from 'fs'
import path from 'path'
Expand All @@ -11,10 +11,12 @@ testIf(!process.env.PRISMA_QUERY_ENGINE_LIBRARY && !process.env.PRISMA_QUERY_ENG
async () => {
await generateTestClient()

const platform = await getPlatform()
const binaryTarget = await getBinaryTargetForCurrentPlatform()

let binaryFileName =
getClientEngineType() === ClientEngineType.Library ? getNodeAPIName(platform, 'fs') : `query-engine-${platform}`
getClientEngineType() === ClientEngineType.Library
? getNodeAPIName(binaryTarget, 'fs')
: `query-engine-${binaryTarget}`

if (process.platform === 'win32' && getClientEngineType() === ClientEngineType.Binary) {
binaryFileName += '.exe'
Expand Down
8 changes: 4 additions & 4 deletions packages/client/src/generation/TSClient/TSClient.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { DataSource, GeneratorConfig } from '@prisma/generator-helper'
import type { Platform } from '@prisma/get-platform'
import type { BinaryTarget } from '@prisma/get-platform'
import { getClientEngineType, getEnvPaths, pathToPosix } from '@prisma/internals'
import ciInfo from 'ci-info'
import crypto from 'crypto'
Expand Down Expand Up @@ -42,7 +42,7 @@ export interface TSClientOptions {
browser?: boolean
datasources: DataSource[]
generator?: GeneratorConfig
platforms?: Platform[] // TODO: consider making it non-nullable
binaryTargets?: BinaryTarget[] // TODO: consider making it non-nullable
schemaPath: string
outputDir: string
activeProvider: string
Expand All @@ -65,7 +65,7 @@ export class TSClient implements Generatable {
}

public async toJS(edge = false): Promise<string> {
const { platforms, generator, outputDir, schemaPath, runtimeDir, runtimeName, datasources, deno, noEngine } =
const { binaryTargets, generator, outputDir, schemaPath, runtimeDir, runtimeName, datasources, deno, noEngine } =
this.options
const envPaths = getEnvPaths(schemaPath, { cwd: outputDir })

Expand Down Expand Up @@ -133,7 +133,7 @@ ${buildDebugInitialization(edge)}
const PrismaClient = getPrismaClient(config)
exports.PrismaClient = PrismaClient
Object.assign(exports, Prisma)${deno ? '\nexport { exports as default, Prisma, PrismaClient }' : ''}
${buildNFTAnnotations(Boolean(edge || noEngine), engineType, platforms, relativeOutdir)}
${buildNFTAnnotations(Boolean(edge || noEngine), engineType, binaryTargets, relativeOutdir)}
`
return code
}
Expand Down
8 changes: 4 additions & 4 deletions packages/client/src/generation/generateClient.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Debug from '@prisma/debug'
import { overwriteFile } from '@prisma/fetch-engine'
import type { BinaryPaths, DataSource, DMMF, GeneratorConfig } from '@prisma/generator-helper'
import { assertNever, ClientEngineType, getClientEngineType, Platform, setClassName } from '@prisma/internals'
import { assertNever, BinaryTarget, ClientEngineType, getClientEngineType, setClassName } from '@prisma/internals'
import paths from 'env-paths'
import { existsSync } from 'fs'
import fs from 'fs/promises'
Expand Down Expand Up @@ -84,10 +84,10 @@ export async function buildClient({
document,
datasources,
generator,
platforms:
binaryTargets:
clientEngineType === ClientEngineType.Library
? (Object.keys(binaryPaths.libqueryEngine ?? {}) as Platform[])
: (Object.keys(binaryPaths.queryEngine ?? {}) as Platform[]),
? (Object.keys(binaryPaths.libqueryEngine ?? {}) as BinaryTarget[])
: (Object.keys(binaryPaths.queryEngine ?? {}) as BinaryTarget[]),
schemaPath,
outputDir,
clientVersion,
Expand Down
Loading

0 comments on commit f72bf3a

Please sign in to comment.