Skip to content

Commit be1b3cf

Browse files
committed
Add support for specifying the prisma client generator
1 parent 0d2b91a commit be1b3cf

File tree

8 files changed

+701
-31
lines changed

8 files changed

+701
-31
lines changed

docs/guides/new-build-system-preview.mdx

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,49 @@ export default defineConfig({
229229
});
230230
```
231231

232+
If you have multiple `generator` statements defined in your schema file, you can pass in the `clientGenerator` option to specify the `prisma-client-js` generator, which will prevent other generators from being generated:
233+
234+
<CodeGroup>
235+
236+
```prisma schema.prisma
237+
datasource db {
238+
provider = "postgresql"
239+
url = env("DATABASE_URL")
240+
directUrl = env("DATABASE_URL_UNPOOLED")
241+
}
242+
243+
// We only want to generate the prisma-client-js generator
244+
generator client {
245+
provider = "prisma-client-js"
246+
}
247+
248+
generator kysely {
249+
provider = "prisma-kysely"
250+
output = "../../src/kysely"
251+
enumFileName = "enums.ts"
252+
fileName = "types.ts"
253+
}
254+
```
255+
256+
```ts trigger.config.ts
257+
import { defineConfig } from "@trigger.dev/sdk/v3";
258+
import { prismaExtension } from "@trigger.dev/build/extensions/prisma";
259+
260+
export default defineConfig({
261+
project: "<project ref>",
262+
build: {
263+
extensions: [
264+
prismaExtension({
265+
schema: "prisma/schema.prisma",
266+
clientGenerator: "client",
267+
}),
268+
],
269+
},
270+
});
271+
```
272+
273+
</CodeGroup>
274+
232275
### audioWaveform
233276

234277
Previously, we installed [Audio Waveform](https://github.com/bbc/audiowaveform) in the build image. That's been moved to a build extension:

packages/build/src/extensions/core/additionalPackages.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,16 @@ export function additionalPackages(options: AdditionalPackagesOptions): BuildExt
4141
continue;
4242
}
4343

44-
console.log("Resolved module path", { modulePath });
44+
context.logger.debug("[additionalPackages] Resolved module path", { modulePath });
4545

4646
const packageJSON = await readPackageJSON(dirname(modulePath));
4747

4848
if (packageJSON.version) {
4949
dependencies[name] = packageJSON.version;
5050
} else {
51-
console.warn(`Could not resolve version for package ${name}, defaulting to latest`);
51+
context.logger.warn(
52+
`Could not resolve version for package ${name}, defaulting to latest`
53+
);
5254

5355
dependencies[name] = "latest";
5456
}

packages/build/src/extensions/prisma.ts

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,34 @@ export type PrismaExtensionOptions = {
99
schema: string;
1010
migrate?: boolean;
1111
version?: string;
12+
/**
13+
* The client generator to use. Set this param to prevent all generators in the prisma schema from being generated.
14+
*
15+
* @example
16+
*
17+
* ### Prisma schema
18+
*
19+
* ```prisma
20+
* generator client {
21+
* provider = "prisma-client-js"
22+
* }
23+
*
24+
* generator typegraphql {
25+
* provider = "typegraphql-prisma"
26+
* output = "./generated/type-graphql"
27+
* }
28+
* ```
29+
*
30+
* ### PrismaExtension
31+
*
32+
* ```ts
33+
* prismaExtension({
34+
* schema: "./prisma/schema.prisma",
35+
* clientGenerator: "client"
36+
* });
37+
* ```
38+
*/
39+
clientGenerator?: string;
1240
directUrlEnvVarName?: string;
1341
};
1442

@@ -86,6 +114,10 @@ export class PrismaExtension implements BuildExtension {
86114

87115
let prismaDir: string | undefined;
88116

117+
const generatorFlag = this.options.clientGenerator
118+
? `--generator=${this.options.clientGenerator}`
119+
: "";
120+
89121
if (usingSchemaFolder) {
90122
const schemaDir = dirname(this._resolvedSchemaPath);
91123

@@ -116,7 +148,9 @@ export class PrismaExtension implements BuildExtension {
116148
}
117149

118150
commands.push(
119-
`${binaryForRuntime(manifest.runtime)} node_modules/prisma/build/index.js generate` // Don't add the --schema flag or this will fail
151+
`${binaryForRuntime(
152+
manifest.runtime
153+
)} node_modules/prisma/build/index.js generate ${generatorFlag}` // Don't add the --schema flag or this will fail
120154
);
121155
} else {
122156
prismaDir = dirname(this._resolvedSchemaPath);
@@ -135,7 +169,7 @@ export class PrismaExtension implements BuildExtension {
135169
commands.push(
136170
`${binaryForRuntime(
137171
manifest.runtime
138-
)} node_modules/prisma/build/index.js generate --schema=./prisma/schema.prisma`
172+
)} node_modules/prisma/build/index.js generate --schema=./prisma/schema.prisma ${generatorFlag}`
139173
);
140174
}
141175

0 commit comments

Comments
 (0)