mirror of
https://github.com/graphql-hive/console
synced 2026-04-23 07:27:17 +00:00
86 lines
3.3 KiB
Markdown
86 lines
3.3 KiB
Markdown
# Hive plugin for Apollo-Router
|
|
|
|
[Hive](https://the-guild.dev/graphql/hive) is a fully open-source schema registry, analytics,
|
|
metrics and gateway for [GraphQL federation](https://the-guild.dev/graphql/hive/federation) and
|
|
other GraphQL APIs.
|
|
|
|
---
|
|
|
|
This project includes a Hive integration plugin for Apollo-Router.
|
|
|
|
At the moment, the following are implemented:
|
|
|
|
- [Fetching Supergraph from Hive CDN](https://the-guild.dev/graphql/hive/docs/high-availability-cdn)
|
|
- [Sending usage information](https://the-guild.dev/graphql/hive/docs/schema-registry/usage-reporting)
|
|
from a running Apollo Router instance to Hive
|
|
- Persisted Operations using Hive's
|
|
[App Deployments](https://the-guild.dev/graphql/hive/docs/schema-registry/app-deployments)
|
|
|
|
This project is constructed as a Rust project that implements Apollo-Router plugin interface.
|
|
|
|
This build of this project creates an artifact identical to Apollo-Router releases, with additional
|
|
features provided by Hive.
|
|
|
|
## Getting Started
|
|
|
|
### Binary/Docker
|
|
|
|
We provide a custom build of Apollo-Router that acts as a drop-in replacement, and adds Hive
|
|
integration to Apollo-Router.
|
|
|
|
[Please follow this guide and documentation for integrating Hive with Apollo Router](https://the-guild.dev/graphql/hive/docs/other-integrations/apollo-router)
|
|
|
|
### As a Library
|
|
|
|
If you are
|
|
[building a custom Apollo-Router with your own native plugins](https://www.apollographql.com/docs/graphos/routing/customization/native-plugins),
|
|
you can use the Hive plugin as a dependency from Crates.io:
|
|
|
|
```toml
|
|
[dependencies]
|
|
hive-apollo-router-plugin = "..."
|
|
```
|
|
|
|
And then in your codebase, make sure to import and register the Hive plugin:
|
|
|
|
```rs
|
|
use apollo_router::register_plugin;
|
|
// import the registry instance and the plugin registration function
|
|
use hive_apollo_router_plugin::registry::HiveRegistry;
|
|
// Import the usage plugin
|
|
use hive_apollo_router_plugin::usage::UsagePlugin;
|
|
// Import persisted documents plugin, if needed
|
|
use persisted_documents::PersistedDocumentsPlugin;
|
|
|
|
|
|
// In your main function, make sure to register the plugin before you create or initialize Apollo-Router
|
|
fn main() {
|
|
// Register the Hive usage_reporting plugin
|
|
register_plugin!("hive", "usage", UsagePlugin);
|
|
// Register the persisted documents plugin, if needed
|
|
register_plugin!("hive", "persisted_documents", PersistedDocumentsPlugin);
|
|
|
|
// Initialize the Hive Registry instance and start the Apollo Router
|
|
match HiveRegistry::new(None).and(apollo_router::main()) {
|
|
Ok(_) => {}
|
|
Err(e) => {
|
|
eprintln!("{}", e);
|
|
std::process::exit(1);
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Development
|
|
|
|
0. Install latest version of Rust
|
|
1. To get started with development, it is recommended to ensure Rust-analyzer extension is enabled
|
|
on your VSCode instance.
|
|
2. Validate project status by running `cargo check`
|
|
3. To start the server with the demo config file (`./router.yaml`), use
|
|
`cargo run -- --config router.yaml`. Make sure to set environment variables required for your
|
|
setup and development process
|
|
([docs](https://the-guild.dev/graphql/hive/docs/other-integrations/apollo-router#configuration)).
|
|
4. You can also just run
|
|
`cargo run -- --config router.yaml --log debug --dev --supergraph some.supergraph.graphql` for
|
|
running it with a test supergraph file.
|