| 381 | } |
| 382 | |
| 383 | export class PrismaClientClass implements Generable { |
| 384 | constructor( |
| 385 | protected readonly context: GenerateContext, |
| 386 | protected readonly internalDatasources: DataSource[], |
| 387 | protected readonly outputDir: string, |
| 388 | protected readonly runtimeName: TSClientOptions['runtimeName'], |
| 389 | protected readonly browser?: boolean, |
| 390 | ) {} |
| 391 | private get jsDoc(): string { |
| 392 | const { dmmf } = this.context |
| 393 | |
| 394 | let example: DMMF.ModelMapping |
| 395 | |
| 396 | if (dmmf.mappings.modelOperations.length) { |
| 397 | example = dmmf.mappings.modelOperations[0] |
| 398 | } else { |
| 399 | // because generator models is empty we need to create a fake example |
| 400 | example = { |
| 401 | model: 'User', |
| 402 | plural: 'users', |
| 403 | } |
| 404 | } |
| 405 | |
| 406 | return `/** |
| 407 | * ## Prisma Client ʲˢ |
| 408 | * |
| 409 | * Type-safe database client for TypeScript & Node.js |
| 410 | * @example |
| 411 | * \`\`\` |
| 412 | * const prisma = new PrismaClient({ |
| 413 | * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL }) |
| 414 | * }) |
| 415 | * // Fetch zero or more ${capitalize(example.plural)} |
| 416 | * const ${uncapitalize(example.plural)} = await prisma.${uncapitalize(example.model)}.findMany() |
| 417 | * \`\`\` |
| 418 | * |
| 419 | * |
| 420 | * Read more in our [docs](https://pris.ly/d/client). |
| 421 | */` |
| 422 | } |
| 423 | public toTSWithoutNamespace(): string { |
| 424 | const { dmmf } = this.context |
| 425 | |
| 426 | return `${this.jsDoc} |
| 427 | export class PrismaClient< |
| 428 | ClientOptions extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions, |
| 429 | const U = 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never, |
| 430 | ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs |
| 431 | > { |
| 432 | [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] } |
| 433 | |
| 434 | ${indent(this.jsDoc, TAB_SIZE)} |
| 435 | |
| 436 | constructor(optionsArg ?: Prisma.Subset<ClientOptions, Prisma.PrismaClientOptions>); |
| 437 | $on<V extends U>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient; |
| 438 | |
| 439 | /** |
| 440 | * Connect with the database |
nothing calls this directly
no outgoing calls
no test coverage detected