8000 Generate prefetchable pagination ASTs · facebook/relay@9035b32 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 9035b32

Browse files
tyao1facebook-github-bot
authored andcommitted
Generate prefetchable pagination ASTs
Reviewed By: captbaritone Differential Revision: D63921399 fbshipit-source-id: 7b8795891693b050667e15d3406fb1ddfa6a6501
1 parent dececd1 commit 9035b32

14 files changed

+1393
-19
lines changed

compiler/crates/relay-codegen/src/build_ast.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
use std::path::PathBuf;
99

10+
use ::intern::intern;
11+
use ::intern::string_key::Intern;
12+
use ::intern::string_key::StringKey;
13+
use ::intern::Lookup;
1014
use common::DirectiveName;
1115
use common::FeatureFlag;
1216
use common::NamedItem;
@@ -32,9 +36,6 @@ use graphql_ir::Selection;
3236
use graphql_ir::Value;
3337
use graphql_ir::VariableDefinition;
3438
use graphql_syntax::OperationKind;
35-
use intern::string_key::Intern;
36-
use intern::string_key::StringKey;
37-
use intern::Lookup;
3839
use lazy_static::lazy_static;
3940
use md5::Digest;
4041
use md5::Md5;
@@ -595,6 +596,16 @@ impl<'schema, 'builder, 'config> CodegenBuilder<'schema, 'builder, 'config> {
595596
})),
596597
});
597598
}
599+
if refetch_metadata.is_prefetchable_pagination {
600+
refetch_object.push(ObjectEntry {
601+
key: intern!("edgesFragment"),
602+
value: Primitive::GraphQLModuleDependency(GraphQLModuleDependency::Name(
603+
ExecutableDefinitionName::FragmentDefinitionName(FragmentDefinitionName(
604+
format!("{}__edges", fragment.name.item).intern(),
605+
)),
606+
)),
607+
});
608+
}
598609

599610
metadata.push(ObjectEntry {
600611
key: CODEGEN_CONSTANTS.refetch,

compiler/crates/relay-codegen/tests/connections.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,12 @@ pub async fn transform_fixture(fixture: &Fixture<'_>) -> Result<String, String>
4747
validate_connections(&program, &connection_interface)
4848
.map_err(|diagnostics| diagnostics_to_sorted_string(fixture.content, &diagnostics))?;
4949

50-
let next_program =
51-
transform_connections(&program, &connection_interface, &defer_stream_interface);
50+
let next_program = transform_connections(
51+
&program,
52+
&connection_interface,
53+
&defer_stream_interface,
54+
false,
55+
);
5256

5357
let mut printed = next_program
5458
.operations()

compiler/crates/relay-compiler/src/build_project/artifact_generated_types.rs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,26 @@ impl ArtifactGeneratedTypes {
138138
)),
139139
}
140140
} else if let Some(refetchable_metadata) = RefetchableMetadata::find(&fragment.directives) {
141-
Self {
142-
imported_types: "ReaderFragment, RefetchableFragment",
143-
ast_type: "ReaderFragment",
144-
exported_type: Some(format!(
145-
"RefetchableFragment<\n {name}$fragmentType,\n {name}$data,\n {refetchable_name}$variables,\n>",
146-
name = fragment.name.item,
147-
refetchable_name = refetchable_metadata.operation_name
148-
)),
141+
if refetchable_metadata.is_prefetchable_pagination {
142+
Self {
143+
imported_types: "ReaderFragment, PrefetchableRefetchableFragment",
144+
ast_type: "ReaderFragment",
145+
exported_type: Some(format!(
146+
"PrefetchableRefetchableFragment<\n {name}$fragmentType,\n {name}$data,\n {name}__edges$data,\n {refetchable_name}$variables,\n>",
147+
name = fragment.name.item,
148+
refetchable_name = refetchable_metadata.operation_name
149+
)),
150+
}
151+
} else {
152+
Self {
153+
imported_types: "ReaderFragment, RefetchableFragment",
154+
ast_type: "ReaderFragment",
155+
exported_type: Some(format!(
156+
"RefetchableFragment<\n {name}$fragmentType,\n {name}$data,\n {refetchable_name}$variables,\n>",
157+
name = fragment.name.item,
158+
refetchable_name = refetchable_metadata.operation_name
159+
)),
160+
}
149161
}
150162
} else if is_updatable_fragment {
151163
Self {

0 commit comments

Comments
 (0)
0