Skip to content

Commit ddd2260

Browse files
authored
Fix: GraphQL codegen / cargo run in rust project (#310)
1 parent e1b4c35 commit ddd2260

File tree

9 files changed

+31
-24
lines changed

9 files changed

+31
-24
lines changed

cli/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ factory_indexing_codegen_typings:
3939
RUSTFLAGS='-C target-cpu=native' cargo run --release --features jemalloc -- codegen --path $(CURDIR)/../examples/rindexer_factory_indexing typings
4040
factory_indexing_codegen_indexer:
4141
RUSTFLAGS='-C target-cpu=native' cargo run --release --features jemalloc -- codegen --path $(CURDIR)/../examples/rindexer_factory_indexing indexer
42+
factory_indexing_codegen_graphql:
43+
RUSTFLAGS='-C target-cpu=native' cargo run --release --features jemalloc -- codegen --path $(CURDIR)/../examples/rindexer_factory_indexing graphql
4244

4345
################################################################################
4446
# LOCAL NONE CHECKED IN PROJECT COMMANDS
@@ -70,4 +72,4 @@ start_factory_indexing:
7072
hyperwarp_codegen_typings:
7173
RUSTFLAGS='-C target-cpu=native' cargo run --release --features jemalloc -- codegen --path $(CURDIR)/../examples/hyperevm typings
7274
hyperwarp_codegen_indexer:
73-
RUSTFLAGS='-C target-cpu=native' cargo run --release --features jemalloc -- codegen --path $(CURDIR)/../examples/hyperevm indexer
75+
RUSTFLAGS='-C target-cpu=native' cargo run --release --features jemalloc -- codegen --path $(CURDIR)/../examples/hyperevm indexer

cli/src/commands/codegen.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
use std::path::PathBuf;
22

3+
use crate::{
4+
cli_interface::CodegenSubcommands,
5+
console::{print_error_message, print_success_message},
6+
rindexer_yaml::validate_rindexer_yaml_exist,
7+
};
38
use rindexer::{
49
format_all_files_for_project, generate_graphql_queries,
510
generator::build::{generate_rindexer_handlers, generate_rindexer_typings},
611
manifest::{
712
core::ProjectType,
13+
graphql::default_graphql_port,
814
yaml::{read_manifest, YAML_CONFIG_NAME},
915
},
1016
};
1117

12-
use crate::{
13-
cli_interface::CodegenSubcommands,
14-
console::{print_error_message, print_success_message},
15-
rindexer_yaml::validate_rindexer_yaml_exist,
16-
};
17-
1818
pub async fn handle_codegen_command(
1919
project_path: PathBuf,
2020
subcommand: &CodegenSubcommands,
2121
) -> Result<(), Box<dyn std::error::Error>> {
2222
if let CodegenSubcommands::GraphQL { endpoint } = subcommand {
23-
let url = endpoint.as_deref().unwrap_or("http://localhost:3001");
23+
let default_url = format!("http://localhost:{}/graphql", default_graphql_port());
24+
let url = endpoint.as_deref().unwrap_or(&default_url);
2425
generate_graphql_queries(url, &project_path).await.map_err(|e| {
2526
print_error_message(&format!("Failed to generate graphql queries: {e}"));
2627
e

core/src/api/generate_schema.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
11
use std::path::Path;
22

3+
use crate::api::generate_operations::{generate_operations, GenerateOperationsError};
34
use reqwest::Client;
45
use serde_json::Value;
56

6-
use crate::api::generate_operations::{generate_operations, GenerateOperationsError};
7-
87
#[derive(thiserror::Error, Debug)]
98
pub enum GenerateGraphqlQueriesError {
109
#[error("Network request failed: {0}")]
1110
Network(#[from] reqwest::Error),
1211

13-
#[error("Failed to parse JSON: {0}")]
14-
JsonParse(#[from] serde_json::Error),
15-
16-
#[error("File system error: {0}")]
17-
Io(#[from] std::io::Error),
18-
1912
#[error("No data in response")]
2013
NoData,
2114

15+
#[error("Invalid response. Make sure that {0} can receive GraphQL introspection query.")]
16+
InvalidData(String),
17+
2218
#[error("Failed to generate operations: {0}")]
2319
GenerateOperationsError(#[from] GenerateOperationsError),
2420
}
@@ -89,7 +85,8 @@ pub async fn generate_graphql_queries(
8985
.send()
9086
.await?
9187
.json::<Value>()
92-
.await?;
88+
.await
89+
.map_err(|_| GenerateGraphqlQueriesError::InvalidData(endpoint.to_string()))?;
9390

9491
let schema = res["data"]["__schema"].clone();
9592
if schema.is_null() {

core/src/generator/build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ serde = {{ version = "1.0", features = ["derive"] }}
530530
let mut port: Option<u16> = None;
531531
532532
let args = args.iter();
533-
if args.len() == 0 {
533+
if args.len() == 1 {
534534
enable_graphql = true;
535535
enable_indexer = true;
536536
}

core/src/manifest/graphql.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use serde::{Deserialize, Serialize};
22

3-
fn default_port() -> u16 {
3+
pub fn default_graphql_port() -> u16 {
44
3001
55
}
66

77
#[derive(Debug, Serialize, Deserialize, Clone)]
88
pub struct GraphQLSettings {
9-
#[serde(default = "default_port")]
9+
#[serde(default = "default_graphql_port")]
1010
pub port: u16,
1111

1212
#[serde(default)]
@@ -18,7 +18,11 @@ pub struct GraphQLSettings {
1818

1919
impl Default for GraphQLSettings {
2020
fn default() -> Self {
21-
Self { port: 3001, disable_advanced_filters: false, filter_only_on_indexed_columns: false }
21+
Self {
22+
port: default_graphql_port(),
23+
disable_advanced_filters: false,
24+
filter_only_on_indexed_columns: false,
25+
}
2226
}
2327
}
2428

documentation/docs/pages/docs/changelog.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
### Bug fixes
1111
-------------------------------------------------
12+
- fix: start indexer and graphql when a rust project is started without any commands
13+
- fix: take the correct default graphql endpoint when generating graphql files
1214

1315
### Breaking changes
1416
-------------------------------------------------

examples/rindexer_factory_indexing/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/rindexer_factory_indexing/src/main.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ async fn main() {
1818
let mut port: Option<u16> = None;
1919

2020
let args = args.iter();
21-
if args.len() == 0 {
21+
22+
if args.len() == 1 {
2223
enable_graphql = true;
2324
enable_indexer = true;
2425
}

examples/rindexer_rust_playground/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ async fn main() {
2020
let mut port: Option<u16> = None;
2121

2222
let args = args.iter();
23-
if args.len() == 0 {
23+
if args.len() == 1 {
2424
enable_graphql = true;
2525
enable_indexer = true;
2626
}

0 commit comments

Comments
 (0)