Skip to content

Commit 7789614

Browse files
committed
split create schema into two parts
1 parent c759043 commit 7789614

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

crates/isograph_compiler/src/compiler_state.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use pico::Database;
1212

1313
use crate::{
1414
batch_compile::{BatchCompileError, CompilationStats},
15-
create_schema::create_schema,
15+
create_schema::{create_schema, process_iso_literals_for_schema},
1616
db_singletons::get_isograph_config,
1717
write_artifacts::write_artifacts_to_disk,
1818
};
@@ -81,7 +81,12 @@ pub fn compile<TNetworkProtocol: NetworkProtocol>(
8181
db: &Database,
8282
) -> Result<CompilationStats, Box<dyn Error>> {
8383
// Create schema
84-
let (isograph_schema, stats) = create_schema::<TNetworkProtocol>(db)?;
84+
let (unvalidated_isograph_schema, unprocessed_items) = create_schema::<TNetworkProtocol>(db)?;
85+
let (isograph_schema, stats) = process_iso_literals_for_schema::<TNetworkProtocol>(
86+
db,
87+
unvalidated_isograph_schema,
88+
unprocessed_items,
89+
)?;
8590

8691
validate_use_of_arguments(&isograph_schema).map_err(|messages| {
8792
Box::new(BatchCompileError::MultipleErrorsWithLocations {

crates/isograph_compiler/src/create_schema.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use isograph_schema::{
1818
validate_entrypoints, CreateAdditionalFieldsError, FieldToInsert, NetworkProtocol,
1919
ProcessObjectTypeDefinitionOutcome, ProcessTypeSystemDocumentOutcome, RootOperationName,
2020
Schema, ServerEntityName, ServerObjectSelectable, ServerObjectSelectableVariant,
21-
ServerScalarSelectable,
21+
ServerScalarSelectable, UnprocessedClientFieldItem, UnprocessedClientPointerItem,
2222
};
2323
use pico::Database;
2424

@@ -32,7 +32,13 @@ use crate::{
3232

3333
pub fn create_schema<TNetworkProtocol: NetworkProtocol>(
3434
db: &Database,
35-
) -> Result<(Schema<TNetworkProtocol>, ContainsIsoStats), Box<dyn Error>> {
35+
) -> Result<
36+
(
37+
Schema<TNetworkProtocol>,
38+
Vec<SelectionType<UnprocessedClientFieldItem, UnprocessedClientPointerItem>>,
39+
),
40+
Box<dyn Error>,
41+
> {
3642
let ProcessTypeSystemDocumentOutcome { scalars, objects } =
3743
TNetworkProtocol::parse_and_process_type_system_documents(db)?;
3844

@@ -104,6 +110,16 @@ pub fn create_schema<TNetworkProtocol: NetworkProtocol>(
104110
}
105111
}
106112

113+
Ok((unvalidated_isograph_schema, unprocessed_items))
114+
}
115+
116+
pub fn process_iso_literals_for_schema<TNetworkProtocol: NetworkProtocol>(
117+
db: &Database,
118+
mut unvalidated_isograph_schema: Schema<TNetworkProtocol>,
119+
mut unprocessed_items: Vec<
120+
SelectionType<UnprocessedClientFieldItem, UnprocessedClientPointerItem>,
121+
>,
122+
) -> Result<(Schema<TNetworkProtocol>, ContainsIsoStats), Box<dyn Error>> {
107123
let iso_literal_map = get_iso_literal_map(db);
108124
let contains_iso = parse_iso_literals(db, iso_literal_map)?;
109125
let contains_iso_stats = contains_iso.stats();

0 commit comments

Comments
 (0)