Skip to content

Commit

Permalink
represent unions as regular variants
Browse files Browse the repository at this point in the history
  • Loading branch information
zth committed Jun 11, 2023
1 parent 3504d77 commit 3b5df51
Show file tree
Hide file tree
Showing 28 changed files with 416 additions and 767 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Dedicated tooling for migrating is coming, as well as docs.
## Breaking changes

- All trailing unit arguments are removed. Commit showing how this is migrated to in the tests: https://github.com/zth/rescript-relay/commit/2a16791268afb29d106362d0cf17915f69d5b4ff
- Unions are now represented as regular variants.

# 0.0.0-version-3-aeebeaab

Expand Down
2 changes: 1 addition & 1 deletion packages/relay
Submodule relay updated 23 files
+113 −128 compiler/crates/relay-typegen/src/rescript.rs
+8 −2 compiler/crates/relay-typegen/src/rescript_ast.rs
+6 −1 compiler/test-project-res/schema.graphql
+4 −0 compiler/test-project-res/src/Test_unions.res
+10 −23 compiler/test-project-res/src/__generated__/TestConnectionsUnion_user_graphql.res
+23 −29 compiler/test-project-res/src/__generated__/TestCustomScalarsQuery_graphql.res
+18 −34 compiler/test-project-res/src/__generated__/TestFragment_requiredUnionPlural_member_graphql.res
+18 −34 compiler/test-project-res/src/__generated__/TestFragment_requiredUnion_member_graphql.res
+25 −52 compiler/test-project-res/src/__generated__/TestLocalPayloadViaNodeInterfaceQuery_graphql.res
+10 −23 compiler/test-project-res/src/__generated__/TestMissingFieldHandlersQuery_graphql.res
+13 −6 compiler/test-project-res/src/__generated__/TestMutationQuery_graphql.res
+40 −44 compiler/test-project-res/src/__generated__/TestMutationWithOnlyFragmentSetOnlineStatusMutation_graphql.res
+16 −32 compiler/test-project-res/src/__generated__/TestMutation_user_graphql.res
+16 −32 compiler/test-project-res/src/__generated__/TestNodeInterfaceOnUnionQuery_graphql.res
+10 −23 compiler/test-project-res/src/__generated__/TestNodeInterfaceQuery_graphql.res
+12 −5 compiler/test-project-res/src/__generated__/TestPaginationUnionQuery_graphql.res
+12 −5 compiler/test-project-res/src/__generated__/TestPaginationUnionRefetchQuery_graphql.res
+19 −35 compiler/test-project-res/src/__generated__/TestPaginationUnion_query_graphql.res
+10 −23 compiler/test-project-res/src/__generated__/TestRefetchingInNodeQuery_graphql.res
+19 −12 compiler/test-project-res/src/__generated__/TestUnionFragmentQuery_graphql.res
+18 −34 compiler/test-project-res/src/__generated__/TestUnionFragment_member_graphql.res
+18 −34 compiler/test-project-res/src/__generated__/TestUnionFragment_plural_member_graphql.res
+95 −102 compiler/test-project-res/src/__generated__/TestUnionsQuery_graphql.res
4 changes: 2 additions & 2 deletions packages/rescript-relay/__tests__/Test_customScalars.res
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ module Test = {
</div>
<div>
{switch query.member {
| Some(#User(user)) =>
| Some(User(user)) =>
React.string("member createdAt: " ++ user.createdAt->Js.Date.getTime->Js.Float.toString)
| Some(#UnselectedUnionMember(_)) | None => React.null
| Some(UnselectedUnionMember(_)) | None => React.null
}}
</div>
</>
Expand Down
18 changes: 9 additions & 9 deletions packages/rescript-relay/__tests__/Test_localPayload.res
Original file line number Diff line number Diff line change
Expand Up @@ -75,21 +75,21 @@ module Test = {
->Belt.Option.getWithDefault([])
->Belt.Array.keepMap(v => v)
->Belt.Array.get(0) {
| Some(#Group({name, topMember})) =>
| Some(Group({name, topMember})) =>
`Group ${name}, top member: ${switch topMember {
| Some(#User({firstName})) => firstName
| Some(User({firstName})) => firstName
| _ => "-"
}}`
| Some(#User({firstName})) => `User ${firstName}`
| Some(User({firstName})) => `User ${firstName}`
| _ => "-"
}}`,
)}
</div>
<div>
{React.string(
`(singular) Member of: ${switch user.memberOfSingular {
| Some(#Group({name})) => `Group ${name}`
| Some(#User({firstName})) => `User ${firstName}`
| Some(Group({name})) => `Group ${name}`
| Some(User({firstName})) => `User ${firstName}`
| _ => "-"
}}`,
)}
Expand All @@ -107,7 +107,7 @@ module Test = {
avatarUrl: None,
memberOf: None,
memberOfSingular: Some(
#Group({
Group({
name: "Another Group",
id: "group-2",
__typename: #Group,
Expand All @@ -126,7 +126,7 @@ module Test = {
~variables={id: data.loggedInUser.id},
~payload={
node: Some(
#User({
User({
id: data.loggedInUser.id,
firstName: "AnotherFirst",
onlineStatus: Some(Online),
Expand All @@ -135,13 +135,13 @@ module Test = {
memberOfSingular: None,
memberOf: Some([
Some(
#Group({
Group({
name: "Some Group",
__typename: #Group,
__isNode: #Group,
id: "group-1",
topMember: Some(
#User({
User({
firstName: "Some User",
id: "user-2",
__typename: #User,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ module RenderMe = {
let query = Query.use(~variables=(), ~fetchPolicy=StoreOnly)

switch query.node {
| Some(#User(user)) => React.string("2: " ++ user.firstName)
| Some(User(user)) => React.string("2: " ++ user.firstName)
| _ => React.string("-")
}
}
Expand Down
2 changes: 1 addition & 1 deletion packages/rescript-relay/__tests__/Test_mutation.res
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ module Test = {
lastName: data.lastName,
memberOf: Some([
Some(
#User({
User({
__typename: #User,
firstName: "test",
id: "123",
Expand Down
2 changes: 1 addition & 1 deletion packages/rescript-relay/__tests__/Test_nodeInterface.res
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ module Test = {
let query = Query.use(~variables=())

switch query.node {
| Some(#User(user)) => React.string(user.firstName)
| Some(User(user)) => React.string(user.firstName)
| _ => React.string("-")
}
}
Expand Down
6 changes: 3 additions & 3 deletions packages/rescript-relay/__tests__/Test_paginationUnion.res
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,11 @@ module Test = {
->Fragment.getConnectionNodes
->Belt.Array.mapWithIndex((i, member) =>
switch member {
| #User(user) =>
| User(user) =>
<div key=user.id>
<UserDisplayer user=user.fragmentRefs />
</div>
| #Group(group) =>
| Group(group) =>
<div key=group.id>
{React.string(
"Group " ++
Expand All @@ -101,7 +101,7 @@ module Test = {
" admins"))),
)}
</div>
| #UnselectedUnionMember(_) =>
| UnselectedUnionMember(_) =>
<div key={i->string_of_int}> {React.string("Unknown type")} </div>
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ module Test = {
let query = Query.use(~variables={userId: "user-1", friendsOnlineStatuses: [Online]})

switch query.node {
| Some(#User(user)) => <UserDisplayer queryRef=user.fragmentRefs />
| Some(User(user)) => <UserDisplayer queryRef=user.fragmentRefs />
| _ => React.string("-")
}
}
Expand Down
4 changes: 2 additions & 2 deletions packages/rescript-relay/__tests__/Test_unionFragment.res
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,15 @@ module FragmentRenderer = {

<>
{switch regular {
| #User({onlineStatus: Some(Online), firstName, fragmentRefs}) =>
| User({onlineStatus: Some(Online), firstName, fragmentRefs}) =>
<>
<div> {React.string(firstName ++ " is online")} </div>
<UserFragmentRenderer user=fragmentRefs />
</>
| _ => React.null
}}
{switch plural {
| [#User({onlineStatus: Some(Online), firstName, fragmentRefs})] =>
| [User({onlineStatus: Some(Online), firstName, fragmentRefs})] =>
<>
<div> {React.string("plural: " ++ (firstName ++ " is online"))} </div>
<UserFragmentRenderer prefix="plural: " user=fragmentRefs />
Expand Down
12 changes: 6 additions & 6 deletions packages/rescript-relay/__tests__/Test_unions.res
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ module Test = {
}
->Belt.Array.map(x =>
switch x {
| #User(user) =>
| User(user) =>
<div key=user.id>
{React.string("First level: " ++ printUser(user.firstName, user.onlineStatus))}
</div>
| #Group(group) =>
| Group(group) =>
<div key=group.id>
{React.string(
"First level: " ++
Expand All @@ -76,11 +76,11 @@ module Test = {
->Belt.Option.getWithDefault([])
->Belt.Array.map(x =>
switch x {
| Some(#User(user)) =>
| Some(User(user)) =>
<div key=user.id>
{React.string("Second level: " ++ printUser(user.firstName, user.onlineStatus))}
</div>
| Some(#Group(g)) =>
| Some(Group(g)) =>
<div key=g.id>
{React.string(
group.name ++
Expand All @@ -90,12 +90,12 @@ module Test = {
g.avatarUrl->Belt.Option.getWithDefault("[no avatar]")))),
)}
</div>
| Some(#UnselectedUnionMember(_)) | None => React.null
| Some(UnselectedUnionMember(_)) | None => React.null
}
)
->React.array}
</div>
| #UnselectedUnionMember(_) => React.null
| UnselectedUnionMember(_) => React.null
}
)
->React.array}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 3b5df51

Please sign in to comment.