Skip to content

Commit

Permalink
Rewrite openapi handler (#4357)
Browse files Browse the repository at this point in the history
Co-authored-by: Arda TANRIKULU <[email protected]>
  • Loading branch information
gilgardosh and ardatan authored Aug 24, 2022
1 parent d5a4e9a commit be79b20
Show file tree
Hide file tree
Showing 124 changed files with 28,942 additions and 170,666 deletions.
7 changes: 0 additions & 7 deletions .changeset/@graphql-mesh_cache-redis-4358-dependencies.md

This file was deleted.

22 changes: 22 additions & 0 deletions .changeset/@graphql-mesh_openapi-4357-dependencies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
"@graphql-mesh/openapi": patch
---

dependencies updates:

- Added dependency [`@omnigraph/[email protected]` ↗︎](https://www.npmjs.com/package/@omnigraph/openapi/v/0.11.2) (to `dependencies`)
- Removed dependency [`@graphql-mesh/[email protected]` ↗︎](https://www.npmjs.com/package/@graphql-mesh/cross-helpers/v/0.2.2) (from `dependencies`)
- Removed dependency [`@graphql-mesh/[email protected]` ↗︎](https://www.npmjs.com/package/@graphql-mesh/string-interpolation/v/0.3.2) (from `dependencies`)
- Removed dependency [`@graphql-tools/[email protected]` ↗︎](https://www.npmjs.com/package/@graphql-tools/utils/v/8.10.0) (from `dependencies`)
- Removed dependency [`@whatwg-node/fetch@^0.3.0` ↗︎](https://www.npmjs.com/package/@whatwg-node/fetch/v/null) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/deep-equal/v/2.0.5) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/form-urlencoded/v/6.1.0) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/jsonpath-plus/v/7.0.0) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/json-pointer/v/0.6.2) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/openapi-diff/v/0.23.6) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/graphql-scalars/v/1.18.0) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/pluralize/v/8.0.0) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/qs/v/6.11.0) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/swagger2openapi/v/7.0.8) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/url-join/v/4.0.1) (from `dependencies`)
- Removed dependency [`[email protected]` ↗︎](https://www.npmjs.com/package/openapi-types/v/12.0.0) (from `dependencies`)
7 changes: 0 additions & 7 deletions .changeset/@graphql-mesh_plugin-webhook-4358-dependencies.md

This file was deleted.

17 changes: 17 additions & 0 deletions .changeset/few-wolves-count.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@graphql-mesh/openapi": minor
"@graphql-mesh/container": patch
"json-machete": patch
"@graphql-mesh/types": patch
---

## Breaking changes

OpenAPI has been completely rewritten based on JSON Schema handler from scratch. It's now more stable and supports more features. However, it produces different output and takes different configuration options.

Please check the migration guide to learn how to migrate your existing OpenAPI handler configuration.
[Migration Guide from 0.31 to 0.32](https://www.graphql-mesh.com/docs/migration/openapi-0.31-0.32)

This rewrite has been done under `@graphql-mesh/new-openapi` name so far, and you can check its changelog to see the progress.
[`@graphql-mesh/new-openapi`'s `CHANGELOG`](https://github.com/Urigo/graphql-mesh/blob/99b5691e216b1ae7f46c3db1b3e91345e5351df8/packages/handlers/new-openapi/CHANGELOG.md)

5 changes: 5 additions & 0 deletions .changeset/khaki-ghosts-pump.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@omnigraph/openapi": minor
---

BREAKING CHANGE: instead of oasFilePath, use source instead
2 changes: 1 addition & 1 deletion examples/nextjs-apollo-example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"dependencies": {
"@graphql-mesh/cli": "0.76.1",
"@graphql-mesh/config": "6.1.0",
"@graphql-mesh/new-openapi": "0.8.2",
"@graphql-mesh/openapi": "0.31.2",
"@graphql-mesh/runtime": "0.42.2",
"apollo-server-micro": "2.26.0",
"graphql": "16.6.0",
Expand Down
4 changes: 2 additions & 2 deletions examples/nextjs-apollo-example/server/.meshrc.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
sources:
- name: PetStore
handler:
newOpenapi:
openapi:
baseUrl: https://petstore.swagger.io/v2/
oasFilePath: https://petstore.swagger.io/v2/swagger.json
source: https://petstore.swagger.io/v2/swagger.json
4 changes: 2 additions & 2 deletions examples/nextjs-sdk-example/.meshrc.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
sources:
- name: PetStore
handler:
newOpenapi:
openapi:
baseUrl: https://petstore.swagger.io/v2/
oasFilePath: https://petstore.swagger.io/v2/swagger.json
source: https://petstore.swagger.io/v2/swagger.json

documents:
- './list-pets.graphql'
2 changes: 1 addition & 1 deletion examples/nextjs-sdk-example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"dependencies": {
"@graphql-mesh/cli": "0.76.1",
"@graphql-mesh/config": "6.1.0",
"@graphql-mesh/new-openapi": "0.8.2",
"@graphql-mesh/openapi": "0.31.2",
"@graphql-mesh/runtime": "0.42.2",
"apollo-server-micro": "2.26.0",
"graphql": "16.6.0",
Expand Down
3 changes: 1 addition & 2 deletions examples/openapi-javascript-wiki/.meshrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ sources:
handler:
openapi:
source: https://api.apis.guru/v2/specs/wikimedia.org/1.0.0/swagger.yaml
operationIdFieldNames: true

additionalTypeDefs: |
extend type Query {
viewsInPastMonth(project: String!): Float!
viewsInPastMonth(project: String!): BigInt!
}
additionalResolvers:
- ./additional-resolvers.ts
Expand Down
46 changes: 27 additions & 19 deletions examples/openapi-javascript-wiki/additional-resolvers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,36 @@ import type { Resolvers } from './.mesh';
export const resolvers: Resolvers = {
Query: {
async viewsInPastMonth(root, { project }, context, info) {
const result = await context.Wiki.Query.getMetricsPageviewsAggregateProjectAccessAgentGranularityStartEnd({
root,
args: {
access: 'ALL_ACCESS',
agent: 'USER',
end: moment().format('YYYYMMDD'),
start: moment().startOf('month').subtract(1, 'month').format('YYYYMMDD'),
project,
granularity: 'DAILY',
},
context,
info,
selectionSet: /* GraphQL */ `
const result =
await context.Wiki.Query.metrics_pageviews_aggregate_by_project_by_access_by_agent_by_granularity_by_start_by_end(
{
items {
views
}
root,
args: {
access: 'all_access',
agent: 'user',
end: moment().format('YYYYMMDD'),
start: moment().startOf('month').subtract(1, 'month').format('YYYYMMDD'),
project,
granularity: 'daily',
},
context,
info,
selectionSet: /* GraphQL */ `
{
... on pageview_project {
items {
views
}
}
}
`,
}
`,
});
);

return result?.items?.[0]?.views || 0;
if (result != null && 'items' in result) {
return result?.items?.[0]?.views || 0n;
}
return 0;
},
},
};
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
query wikipediaMetrics {
getMetricsPageviewsAggregateProjectAccessAgentGranularityStartEnd(
access: ALL_ACCESS
agent: USER
metrics_pageviews_aggregate_by_project_by_access_by_agent_by_granularity_by_start_by_end(
access: all_access
agent: user
start: "20200101"
end: "20200226"
project: "en.wikipedia.org"
granularity: DAILY
granularity: daily
) {
items {
views
... on pageview_project {
items {
views
}
}
}
}
Loading

1 comment on commit be79b20

@vercel
Copy link

@vercel vercel bot commented on be79b20 Aug 24, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.