diff --git a/.changeset/fix-query-param-generated-types.md b/.changeset/fix-query-param-generated-types.md new file mode 100644 index 00000000..06393e34 --- /dev/null +++ b/.changeset/fix-query-param-generated-types.md @@ -0,0 +1,7 @@ +--- +'@opensaas/stack-cli': patch +--- + +Fix missing `query` parameter in generated `FindManyArgs` and `FindUniqueArgs` types + +Passing a fragment to `context.db.post.findMany({ query: fragment })` or `context.db.post.findUnique({ where: { id }, query: fragment })` no longer produces a TypeScript error. The generator now emits `query?: Fragment>` in the relevant args types. diff --git a/packages/cli/src/commands/__snapshots__/generate.test.ts.snap b/packages/cli/src/commands/__snapshots__/generate.test.ts.snap index 7e0b8eb1..c6288665 100644 --- a/packages/cli/src/commands/__snapshots__/generate.test.ts.snap +++ b/packages/cli/src/commands/__snapshots__/generate.test.ts.snap @@ -146,7 +146,7 @@ exports[`Generate Command Integration > Generator Integration > should generate * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -272,6 +272,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -279,6 +280,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -447,7 +449,7 @@ exports[`Generate Command Integration > Generator Integration > should handle em * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' diff --git a/packages/cli/src/generator/__snapshots__/types.test.ts.snap b/packages/cli/src/generator/__snapshots__/types.test.ts.snap index 8bcafdc6..32772879 100644 --- a/packages/cli/src/generator/__snapshots__/types.test.ts.snap +++ b/packages/cli/src/generator/__snapshots__/types.test.ts.snap @@ -6,7 +6,7 @@ exports[`Types Generator > generateTypes > should generate Context type with all * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -129,6 +129,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -136,6 +137,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -237,7 +239,7 @@ exports[`Types Generator > generateTypes > should generate CreateInput type 1`] * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -363,6 +365,7 @@ export type PostDefaultArgs = { */ export type PostFindUniqueArgs = Omit & { select?: PostSelect | null + query?: Fragment> } /** @@ -370,6 +373,7 @@ export type PostFindUniqueArgs = Omit & { */ export type PostFindManyArgs = Omit & { select?: PostSelect | null + query?: Fragment> } /** @@ -471,7 +475,7 @@ exports[`Types Generator > generateTypes > should generate Include type with vir * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -676,6 +680,7 @@ export type UserDefaultArgs = { export type UserFindUniqueArgs = Omit & { select?: UserSelect | null include?: UserInclude | null + query?: Fragment> } /** @@ -684,6 +689,7 @@ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null include?: UserInclude | null + query?: Fragment> } /** @@ -899,6 +905,7 @@ export type PostDefaultArgs = { export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -907,6 +914,7 @@ export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -1037,7 +1045,7 @@ exports[`Types Generator > generateTypes > should generate Select and GetPayload * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -1196,6 +1204,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -1203,6 +1212,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -1304,7 +1314,7 @@ exports[`Types Generator > generateTypes > should generate UpdateInput type 1`] * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -1430,6 +1440,7 @@ export type PostDefaultArgs = { */ export type PostFindUniqueArgs = Omit & { select?: PostSelect | null + query?: Fragment> } /** @@ -1437,6 +1448,7 @@ export type PostFindUniqueArgs = Omit & { */ export type PostFindManyArgs = Omit & { select?: PostSelect | null + query?: Fragment> } /** @@ -1538,7 +1550,7 @@ exports[`Types Generator > generateTypes > should generate WhereInput type 1`] = * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -1661,6 +1673,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -1668,6 +1681,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -1769,7 +1783,7 @@ exports[`Types Generator > generateTypes > should generate type definitions for * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -1895,6 +1909,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -1902,6 +1917,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -2003,7 +2019,7 @@ exports[`Types Generator > generateTypes > should generate types for multiple li * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -2126,6 +2142,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -2133,6 +2150,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -2284,6 +2302,7 @@ export type PostDefaultArgs = { */ export type PostFindUniqueArgs = Omit & { select?: PostSelect | null + query?: Fragment> } /** @@ -2291,6 +2310,7 @@ export type PostFindUniqueArgs = Omit & { */ export type PostFindManyArgs = Omit & { select?: PostSelect | null + query?: Fragment> } /** @@ -2442,6 +2462,7 @@ export type CommentDefaultArgs = { */ export type CommentFindUniqueArgs = Omit & { select?: CommentSelect | null + query?: Fragment> } /** @@ -2449,6 +2470,7 @@ export type CommentFindUniqueArgs = Omit */ export type CommentFindManyArgs = Omit & { select?: CommentSelect | null + query?: Fragment> } /** @@ -2598,7 +2620,7 @@ exports[`Types Generator > generateTypes > should handle relationship fields in * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -2780,6 +2802,7 @@ export type PostDefaultArgs = { export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -2788,6 +2811,7 @@ export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -2944,6 +2968,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -2951,6 +2976,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -3076,7 +3102,7 @@ exports[`Types Generator > generateTypes > should handle relationship fields in * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -3258,6 +3284,7 @@ export type PostDefaultArgs = { export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -3266,6 +3293,7 @@ export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -3422,6 +3450,7 @@ export type UserDefaultArgs = { */ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -3429,6 +3458,7 @@ export type UserFindUniqueArgs = Omit & { */ export type UserFindManyArgs = Omit & { select?: UserSelect | null + query?: Fragment> } /** @@ -3554,7 +3584,7 @@ exports[`Types Generator > generateTypes > should handle relationship fields in * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -3735,6 +3765,7 @@ export type UserDefaultArgs = { export type UserFindUniqueArgs = Omit & { select?: UserSelect | null include?: UserInclude | null + query?: Fragment> } /** @@ -3743,6 +3774,7 @@ export type UserFindUniqueArgs = Omit & { select?: UserSelect | null include?: UserInclude | null + query?: Fragment> } /** @@ -3958,6 +3990,7 @@ export type PostDefaultArgs = { export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -3966,6 +3999,7 @@ export type PostFindUniqueArgs = Omit & { select?: PostSelect | null include?: PostInclude | null + query?: Fragment> } /** @@ -4096,7 +4130,7 @@ exports[`Types Generator > generateTypes > should use StripVirtualFromArgs in Ge * DO NOT EDIT - This file is automatically generated */ -import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core' +import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core' import type { PrismaClient, Prisma } from './prisma-client/client' import type { PluginServices } from './plugin-types' @@ -4277,6 +4311,7 @@ export type AccountDefaultArgs = { export type AccountFindUniqueArgs = Omit & { select?: AccountSelect | null include?: AccountInclude | null + query?: Fragment> } /** @@ -4285,6 +4320,7 @@ export type AccountFindUniqueArgs = Omit & { select?: AccountSelect | null include?: AccountInclude | null + query?: Fragment> } /** @@ -4524,6 +4560,7 @@ export type BillDefaultArgs = { export type BillFindUniqueArgs = Omit & { select?: BillSelect | null include?: BillInclude | null + query?: Fragment> } /** @@ -4532,6 +4569,7 @@ export type BillFindUniqueArgs = Omit & { select?: BillSelect | null include?: BillInclude | null + query?: Fragment> } /** diff --git a/packages/cli/src/generator/types.ts b/packages/cli/src/generator/types.ts index 88f5c698..bbf0d142 100644 --- a/packages/cli/src/generator/types.ts +++ b/packages/cli/src/generator/types.ts @@ -634,6 +634,7 @@ function generateFindUniqueArgsType(listName: string, fields: Record & { select?: ${listName}Select | null include?: ${listName}Include | null + query?: Fragment<${listName}Output, FieldSelection<${listName}Output>> }` } else { return `/** @@ -641,6 +642,7 @@ export type ${listName}FindUniqueArgs = Omit & { select?: ${listName}Select | null + query?: Fragment<${listName}Output, FieldSelection<${listName}Output>> }` } } @@ -658,6 +660,7 @@ function generateFindManyArgsType(listName: string, fields: Record & { select?: ${listName}Select | null include?: ${listName}Include | null + query?: Fragment<${listName}Output, FieldSelection<${listName}Output>> }` } else { return `/** @@ -665,6 +668,7 @@ export type ${listName}FindManyArgs = Omit & { select?: ${listName}Select | null + query?: Fragment<${listName}Output, FieldSelection<${listName}Output>> }` } } @@ -979,7 +983,7 @@ export function generateTypes(config: OpenSaasConfig): string { // Add necessary imports // Use alias for Session to avoid conflicts if user has a list named "Session" lines.push( - "import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext } from '@opensaas/stack-core'", + "import type { Session as OpensaasSession, StorageUtils, ServerActionProps, AccessControlledDB, AccessContext, Fragment, FieldSelection } from '@opensaas/stack-core'", ) lines.push("import type { PrismaClient, Prisma } from './prisma-client/client'") lines.push("import type { PluginServices } from './plugin-types'")