Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue: tweaking graphql schema not working #166

Closed
ocheezyy-lw opened this issue Oct 2, 2023 · 3 comments
Closed

Issue: tweaking graphql schema not working #166

ocheezyy-lw opened this issue Oct 2, 2023 · 3 comments
Labels
is: bug Something isn't working is: wontfix This will not be worked on package: client Client package package: generator Generator package

Comments

@ocheezyy-lw
Copy link

Per the documentation I have added the following AST comment to a type in my schema (trying to override a query name)

/// @gql(queries: { list: "workerIndustries" })
model worker_industries {
  id          String   @id @default(dbgenerated("public.uuid_generate_v4()")) @db.Uuid
  worker_id   String   @db.Uuid
  industry_id String   @db.Uuid
  created_at  DateTime @default(now()) @db.Timestamptz(6)
  industry    industry @relation(fields: [industry_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
  worker      worker   @relation(fields: [worker_id], references: [id], onDelete: Cascade, onUpdate: NoAction)
}

After doing so I received the following error in the console on yarn run dev

/Users/user/Documents/prisma-appsync/node_modules/@graphql-tools/schema/cjs/addResolversToSchema.js:73
                            throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`);
                                  ^

Error: Query.listWorkerIndustries defined in resolvers, but not in schema
    at addResolversToSchema (/Users/user/Documents/prisma-appsync/node_modules/@graphql-tools/schema/cjs/addResolversToSchema.js:73:35)
    at makeExecutableSchema (/Users/user/Documents/prisma-appsync/node_modules/@graphql-tools/schema/cjs/makeExecutableSchema.js:80:65)
    at generateResolvers (/Users/user/Documents/prisma-appsync/node_modules/amplify-appsync-simulator/src/schema/index.ts:79:25)
    at AmplifyAppSyncSimulator.init (/Users/user/Documents/prisma-appsync/node_modules/amplify-appsync-simulator/src/index.ts:111:39)
    at Object.start (/Users/user/Documents/prisma-appsync/node_modules/prisma-appsync/dist/server/index.js:22:3611)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at Proxy.createServer (/Users/user/Documents/prisma-appsync/node_modules/prisma-appsync/dist/server/index.js:22:4516)

I've tried doing it on other models to see if it's something isolated to this one but it doesn't seem to be the case.

Environment info:
OS: MacOS 13.6 (ARM)
NodeJS: v18.12.1

@maoosi
Copy link
Owner

maoosi commented Oct 2, 2023

@ocheezyy-lw, thanks for reporting. I can confirm this is an issue that currently affects renaming any of the default CRUD operations.

Probably not the response you’d want to hear, but the ability to rename default CRUD operations will be removed from the next Prisma-AppSync release.

The complexity behind the current GraphQL generator has prevented us from adding new features and resolving known issues. As a result, it's been decided to entirely rebuild the Prisma-AppSync GraphQL generator from the ground. Renaming operations is actually affecting many parts of the library and not only the GraphQL Schema output. So, to keep the scope manageable as well as enhance security, we also decided to deprecate the renaming feature.

However, this rewrite allowed us to introduce new features, such as:

  • Finer control over the GraphQL output through the use of the @gql directive. Right now, it is only possible to disable all queries, mutations or subscriptions. Soon, you’ll be able to granularly disable get, list, create, update, etc..
  • Ability to apply AppSync Authorization modes to all queries and fields at the same granular level through the @auth directive. Right now, this is limited to models.
  • We're also making changes to the GraphQL schema to allow the use of create and update actions on relation queries. This is similar to what's available in the Prisma Client: https://www.prisma.io/docs/concepts/components/prisma-client/relation-queries#connect-or-create-a-record
  • And more to come...

So, to go back to your use case you’ll have two choices after the new release: 1/ use the default listWorkerIndustries OR 2/ disable the list operation using the new @gql(queries: { list: null }) and create a custom resolver named workerIndustries.

The new version will be released within the next 10-15 days.

@maoosi maoosi added is: wontfix This will not be worked on is: bug Something isn't working package: client Client package package: generator Generator package labels Oct 2, 2023
@ocheezyy-lw
Copy link
Author

Thanks so much for getting back to me! I completely understand the change, was just a bit confused when following the docs.

I have another question that I'm not sure if it's worth making a new issue for. On this page in the docs there is no mention of AWS_LAMBDA auth. Is that possible to use?

@maoosi
Copy link
Owner

maoosi commented Oct 3, 2023

That's also part of the new release.

Still in testing and not documented yet - but you can install it via yarn add prisma-appsync@preview to use /// @auth(model: [{ allow: lambda }]).

Make sure to switch back to non-preview after the release.

@maoosi maoosi closed this as completed Oct 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is: bug Something isn't working is: wontfix This will not be worked on package: client Client package package: generator Generator package
Projects
None yet
Development

No branches or pull requests

2 participants