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

[chore][GraphQL] Declutter schemas #18288

Merged
merged 2 commits into from
Aug 19, 2024
Merged

[chore][GraphQL] Declutter schemas #18288

merged 2 commits into from
Aug 19, 2024

Conversation

amnn
Copy link
Member

@amnn amnn commented Jun 17, 2024

Description

Remove draft_target_schema.graphql and promote
current_progress_schema.graphql to be the canonical schema for the service -- move it to the top-level of the sui-graphql-rpc crate to make it easier to find. This is to avoid confusion about source of truth for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions, we will need to cherry-pick this change to release branches when it lands.

Test plan

CI

Stack


Release notes

Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required.

For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates.

  • Protocol:
  • Nodes (Validators and Full nodes):
  • Indexer:
  • JSON-RPC:
  • GraphQL: The schema file has been moved from crates/sui-graphql-rpc/schemas/current_progress_schema.graphql to crates/sui-graphql-rpc/schema.graphql.
  • CLI:
  • Rust SDK:

@amnn amnn requested a review from hayes-mysten June 17, 2024 15:18
@amnn amnn self-assigned this Jun 17, 2024
Copy link

vercel bot commented Jun 17, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
multisig-toolkit ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 19, 2024 11:03am
sui-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 19, 2024 11:03am
sui-kiosk ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 19, 2024 11:03am
sui-typescript-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Aug 19, 2024 11:03am

@amnn
Copy link
Member Author

amnn commented Jun 17, 2024

I figured it's time to graduate the GraphQL schema from having an "in-progress" schema to just having a schema. Heads up @hayes-mysten as I think you are the one who's most likely to be affected by this change -- when I land this PR, I'll put up cherry-picks for all release branches to follow this structure, so that the TS SDK schema discovery script keeps working.

Copy link
Contributor

github-actions bot commented Jun 17, 2024

⚠️ 🦋 Changesets Warning: This PR has changes to public npm packages, but does not contain a changeset. You can create a changeset easily by running pnpm changeset in the root of the Sui repo, and following the prompts. If your change does not need a changeset (e.g. a documentation-only change), you can ignore this message. This warning will be removed when a changeset is added to this pull request.

Learn more about Changesets.

Copy link
Contributor

@stefan-mysten stefan-mysten left a comment

Choose a reason for hiding this comment

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

Nice!

## Description

Remove commands to generate examples, markdown and schema from the
main binary as we do not use them:

- Instead of generating examples, we have hand-crafted examples in our
  docs. Removing this code also removes a test that forces
  regeneration of a markdown file from these docs (which we also were
  not using).
- We also never used the output from the `generate-schema`
  sub-command, because the schema was always available as a file, or
  via introspection commands from the running service.
- Logic for gathering examples to test has been moved into the test
  file, to avoid including test-only code in the main library.

## Test plan

CI
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of
truth for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI
Base automatically changed from amnn/gql-eg-clean to amnn/gql-pkg-v-page August 19, 2024 10:40
@amnn amnn merged commit 41373b3 into amnn/gql-pkg-v-page Aug 19, 2024
43 of 45 checks passed
@amnn amnn deleted the amnn/gql-schema branch August 19, 2024 10:41
amnn added a commit that referenced this pull request Aug 19, 2024
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of truth
for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: The schema file has been moved from
`crates/sui-graphql-rpc/schemas/current_progress_schema.graphql` to
`crates/sui-graphql-rpc/schema.graphql`.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 19, 2024
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of truth
for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: The schema file has been moved from
`crates/sui-graphql-rpc/schemas/current_progress_schema.graphql` to
`crates/sui-graphql-rpc/schema.graphql`.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 19, 2024
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of truth
for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: The schema file has been moved from
`crates/sui-graphql-rpc/schemas/current_progress_schema.graphql` to
`crates/sui-graphql-rpc/schema.graphql`.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 19, 2024
## Description

Add a command for generating a config TOML file for the GraphQL service
with all its parameters set to their default values. (We used to have a
similar command for the YAML file which we weren't using, but we still
use the TOML file).

## Test plan

```
cargo run --bin sui-graphql-rpc -- generate-config /tmp/config.toml
```

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: New sub-command for `sui-graphql-rpc`, `generate-config`
for creating a TOML config with all default values set.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 19, 2024
## Description

Replace the original implementation of the dump-packages command (which
requires access to an indexer database) with an implementation that
reads from a GraphQL service. The former is not readily accessible, but
the latter should be.

The new tool is also able to run incrementally: Fetching only packages
created before a certain checkpoint, or pick up where a previous
invocation took off to fetch new packages that were introduced since.

## Test plan

Ran a test invocation, on our experimental read replica. With a max page
size of 200, I was able to fetch 17000 packages (all the packages at the
time the read replica was created) in 3 minutes.

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 
- #18336

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 20, 2024
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of truth
for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: The schema file has been moved from
`crates/sui-graphql-rpc/schemas/current_progress_schema.graphql` to
`crates/sui-graphql-rpc/schema.graphql`.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 20, 2024
## Description

Add a command for generating a config TOML file for the GraphQL service
with all its parameters set to their default values. (We used to have a
similar command for the YAML file which we weren't using, but we still
use the TOML file).

## Test plan

```
cargo run --bin sui-graphql-rpc -- generate-config /tmp/config.toml
```

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: New sub-command for `sui-graphql-rpc`, `generate-config`
for creating a TOML config with all default values set.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 20, 2024
## Description

Replace the original implementation of the dump-packages command (which
requires access to an indexer database) with an implementation that
reads from a GraphQL service. The former is not readily accessible, but
the latter should be.

The new tool is also able to run incrementally: Fetching only packages
created before a certain checkpoint, or pick up where a previous
invocation took off to fetch new packages that were introduced since.

## Test plan

Ran a test invocation, on our experimental read replica. With a max page
size of 200, I was able to fetch 17000 packages (all the packages at the
time the read replica was created) in 3 minutes.

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 
- #18336

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 20, 2024
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of truth
for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: The schema file has been moved from
`crates/sui-graphql-rpc/schemas/current_progress_schema.graphql` to
`crates/sui-graphql-rpc/schema.graphql`.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 20, 2024
## Description

Add a command for generating a config TOML file for the GraphQL service
with all its parameters set to their default values. (We used to have a
similar command for the YAML file which we weren't using, but we still
use the TOML file).

## Test plan

```
cargo run --bin sui-graphql-rpc -- generate-config /tmp/config.toml
```

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: New sub-command for `sui-graphql-rpc`, `generate-config`
for creating a TOML config with all default values set.
- [ ] CLI: 
- [ ] Rust SDK:
amnn added a commit that referenced this pull request Aug 20, 2024
## Description

Replace the original implementation of the dump-packages command (which
requires access to an indexer database) with an implementation that
reads from a GraphQL service. The former is not readily accessible, but
the latter should be.

The new tool is also able to run incrementally: Fetching only packages
created before a certain checkpoint, or pick up where a previous
invocation took off to fetch new packages that were introduced since.

## Test plan

Ran a test invocation, on our experimental read replica. With a max page
size of 200, I was able to fetch 17000 packages (all the packages at the
time the read replica was created) in 3 minutes.

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 
- #18336

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
tx-tomcat pushed a commit to tx-tomcat/sui-network that referenced this pull request Aug 27, 2024
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of truth
for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI

## Stack

- MystenLabs#17543
- MystenLabs#17692 
- MystenLabs#17693 
- MystenLabs#17696 
- MystenLabs#18287 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: The schema file has been moved from
`crates/sui-graphql-rpc/schemas/current_progress_schema.graphql` to
`crates/sui-graphql-rpc/schema.graphql`.
- [ ] CLI: 
- [ ] Rust SDK:
tx-tomcat pushed a commit to tx-tomcat/sui-network that referenced this pull request Aug 27, 2024
## Description

Add a command for generating a config TOML file for the GraphQL service
with all its parameters set to their default values. (We used to have a
similar command for the YAML file which we weren't using, but we still
use the TOML file).

## Test plan

```
cargo run --bin sui-graphql-rpc -- generate-config /tmp/config.toml
```

## Stack

- MystenLabs#17543
- MystenLabs#17692 
- MystenLabs#17693 
- MystenLabs#17696 
- MystenLabs#18287 
- MystenLabs#18288 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: New sub-command for `sui-graphql-rpc`, `generate-config`
for creating a TOML config with all default values set.
- [ ] CLI: 
- [ ] Rust SDK:
tx-tomcat pushed a commit to tx-tomcat/sui-network that referenced this pull request Aug 27, 2024
## Description

Replace the original implementation of the dump-packages command (which
requires access to an indexer database) with an implementation that
reads from a GraphQL service. The former is not readily accessible, but
the latter should be.

The new tool is also able to run incrementally: Fetching only packages
created before a certain checkpoint, or pick up where a previous
invocation took off to fetch new packages that were introduced since.

## Test plan

Ran a test invocation, on our experimental read replica. With a max page
size of 200, I was able to fetch 17000 packages (all the packages at the
time the read replica was created) in 3 minutes.

## Stack

- MystenLabs#17543
- MystenLabs#17692 
- MystenLabs#17693 
- MystenLabs#17696 
- MystenLabs#18287 
- MystenLabs#18288 
- MystenLabs#18336

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
suiwombat pushed a commit that referenced this pull request Sep 16, 2024
## Description

Remove `draft_target_schema.graphql` and promote
`current_progress_schema.graphql` to be the canonical schema for the
service -- move it to the top-level of the `sui-graphql-rpc` crate to
make it easier to find. This is to avoid confusion about source of truth
for the GraphQL schema.

Because the TS SDK references the schema at multiple GraphQL versions,
we will need to cherry-pick this change to release branches when it
lands.

## Test plan

CI

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: The schema file has been moved from
`crates/sui-graphql-rpc/schemas/current_progress_schema.graphql` to
`crates/sui-graphql-rpc/schema.graphql`.
- [ ] CLI: 
- [ ] Rust SDK:
suiwombat pushed a commit that referenced this pull request Sep 16, 2024
## Description

Add a command for generating a config TOML file for the GraphQL service
with all its parameters set to their default values. (We used to have a
similar command for the YAML file which we weren't using, but we still
use the TOML file).

## Test plan

```
cargo run --bin sui-graphql-rpc -- generate-config /tmp/config.toml
```

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [x] GraphQL: New sub-command for `sui-graphql-rpc`, `generate-config`
for creating a TOML config with all default values set.
- [ ] CLI: 
- [ ] Rust SDK:
suiwombat pushed a commit that referenced this pull request Sep 16, 2024
## Description

Replace the original implementation of the dump-packages command (which
requires access to an indexer database) with an implementation that
reads from a GraphQL service. The former is not readily accessible, but
the latter should be.

The new tool is also able to run incrementally: Fetching only packages
created before a certain checkpoint, or pick up where a previous
invocation took off to fetch new packages that were introduced since.

## Test plan

Ran a test invocation, on our experimental read replica. With a max page
size of 200, I was able to fetch 17000 packages (all the packages at the
time the read replica was created) in 3 minutes.

## Stack

- #17543
- #17692 
- #17693 
- #17696 
- #18287 
- #18288 
- #18336

---

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] Indexer: 
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants