planetarium / planet-node

A simple node implementation using Libplanet
GNU Affero General Public License v3.0
7 stars 13 forks source link

Provide `LibplanetExplorerSchema<T>` at `/graphql/explorer` #42

Closed moreal closed 1 year ago

moreal commented 1 year ago

This pull request close #41.


This pull request makes planet-node provide LibplanetExplorerSchema<T> on the /explorer endpoint.

I want to suggest all libplanet implementations reuse LibplanetExplorerSchema<T> and planetarium/libplanet-explorer-frontend should target the schema for generic support.

Because I don't have permission to assign reviewers, I mention here:

Related issues:

tkiapril commented 1 year ago

I think it is a good idea to have a common GraphQL API interface between applications using libplanet to allow for interop, however as it seems for planet-node for the moment it seems duplicated with queries in PlanetNodeSchema, so I'm wondering if we should deduplicate the code. Any thoughts? @dahlia @longfin

dahlia commented 1 year ago

It's ideal to remove the most of PlanetNodeSchema and use LibplanetExplorerSchema<T>, which is common, instead. Also it would be better if PlanetNodeSchema at the root composites LibplanetExplorerSchema<T> (or LibplanetExplorerSchema<T> is served at the root, but it's just idealism) rather than LibplanetExplorerSchema<T> having a separated endpoint /explorer.

moreal commented 1 year ago

Also it would be better if PlanetNodeSchema at the root composites LibplanetExplorerSchema<T> (or LibplanetExplorerSchema<T> is served at the root, but it's just idealism) rather than LibplanetExplorerSchema<T> having a separated endpoint /explorer.

After looking at your idea, I felt it seems similar to GraphQL federation (https://github.com/graphql-dotnet/graphql-dotnet/pull/3144). But it seems different a little too.

It's ideal to remove the most of PlanetNodeSchema and use LibplanetExplorerSchema, which is common, instead.

At this time, I'll remove the ExplorerQuery<T> part in PlanetNodeSchema. (0a31ade)

moreal commented 1 year ago

Could you review this pull request one more time, please? Is there something I have to work on or another opinion?

pull-request-quantifier-deprecated[bot] commented 1 year ago

This PR has 7 quantified lines of changes. In general, a change size of upto 200 lines is ideal for the best PR experience!


Quantification details

``` Label : Extra Small Size : +7 -0 Percentile : 2.8% Total files changed: 2 Change summary by file extension: .cs : +7 -0 ``` > Change counts above are quantified counts, based on the [PullRequestQuantifier customizations](https://github.com/microsoft/PullRequestQuantifier/blob/main/docs/prquantifier-yaml.md).

Why proper sizing of changes matters

Optimal pull request sizes drive a better predictable PR flow as they strike a balance between between PR complexity and PR review overhead. PRs within the optimal size (typical small, or medium sized PRs) mean: - Fast and predictable releases to production: - Optimal size changes are more likely to be reviewed faster with fewer iterations. - Similarity in low PR complexity drives similar review times. - Review quality is likely higher as complexity is lower: - Bugs are more likely to be detected. - Code inconsistencies are more likely to be detected. - Knowledge sharing is improved within the participants: - Small portions can be assimilated better. - Better engineering practices are exercised: - Solving big problems by dividing them in well contained, smaller problems. - Exercising separation of concerns within the code changes. #### What can I do to optimize my changes - Use the PullRequestQuantifier to quantify your PR accurately - Create a context profile for your repo using the [context generator](https://github.com/microsoft/PullRequestQuantifier/releases) - Exclude files that are not necessary to be reviewed or do not increase the review complexity. Example: Autogenerated code, docs, project IDE setting files, binaries, etc. Check out the `Excluded` section from your `prquantifier.yaml` context profile. - Understand your typical change complexity, drive towards the desired complexity by adjusting the label mapping in your `prquantifier.yaml` context profile. - Only use the labels that matter to you, [see context specification](./docs/prquantifier-yaml.md) to customize your `prquantifier.yaml` context profile. - Change your engineering behaviors - For PRs that fall outside of the desired spectrum, review the details and check if: - Your PR could be split in smaller, self-contained PRs instead - Your PR only solves one particular issue. (For example, don't refactor and code new features in the same PR). #### How to interpret the change counts in git diff output - One line was added: `+1 -0` - One line was deleted: `+0 -1` - One line was modified: `+1 -1` (git diff doesn't know about modified, it will interpret that line like one addition plus one deletion) - Change percentiles: Change characteristics (addition, deletion, modification) of this PR in relation to all other PRs within the repository.


Was this comment helpful? :thumbsup:  :ok_hand:  :thumbsdown: (Email) Customize PullRequestQuantifier for this repository.