Skip to content

Commit 4f31fd8

Browse files
authored
Handle cases when storing server-defined models in local state (#488)
* Handle cases when storing server-defined models in local state * Add unit tests
1 parent 80497f3 commit 4f31fd8

5 files changed

Lines changed: 17 additions & 13 deletions

File tree

packages/apollo-cli/src/commands/codegen/__tests__/__snapshots__/generate.test.ts.snap

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,11 +355,16 @@ export interface SimpleQuery_serverSideField {
355355
addedLocalData: string;
356356
}
357357
358+
export interface SimpleQuery_localServerModel {
359+
serverData: string;
360+
}
361+
358362
export interface SimpleQuery {
359363
hello: string;
360364
localState: string;
361365
complexLocalState: SimpleQuery_complexLocalState;
362366
serverSideField: SimpleQuery_serverSideField;
367+
localServerModel: SimpleQuery_localServerModel;
363368
}
364369
365370
/* tslint:disable */
@@ -393,11 +398,16 @@ export interface SimpleQuery_serverSideField {
393398
addedLocalData: string;
394399
}
395400
401+
export interface SimpleQuery_localServerModel {
402+
serverData: string;
403+
}
404+
396405
export interface SimpleQuery {
397406
hello: string;
398407
localState: string;
399408
complexLocalState: SimpleQuery_complexLocalState;
400409
serverSideField: SimpleQuery_serverSideField;
410+
localServerModel: SimpleQuery_localServerModel;
401411
}
402412
403413
/* tslint:disable */

packages/apollo-cli/src/commands/codegen/__tests__/fixtures/clientSideSchema.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
extend type Query {
22
localState: String!
33
complexLocalState: LocalType!
4+
localServerModel: ServerField!
45
}
56

67
type LocalType {

packages/apollo-cli/src/commands/codegen/__tests__/fixtures/clientSideSchemaQuery.graphql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,8 @@ query SimpleQuery {
99
serverData
1010
addedLocalData @client
1111
}
12+
13+
localServerModel @client {
14+
serverData # this is actually stored in the client though
15+
}
1216
}

packages/apollo-cli/src/commands/codegen/__tests__/generate.test.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,7 @@ type RemovedType {
6161

6262
const clientSideSchemaTag = `
6363
gql\`
64-
extend type Query {
65-
localState: String!
66-
complexLocalState: LocalType!
67-
}
68-
69-
type LocalType {
70-
someData: String!
71-
}
72-
73-
extend type ServerField {
74-
addedLocalData: String!
75-
}
64+
${clientSideSchema}
7665
\`
7766
`;
7867

packages/apollo-codegen-core/src/compiler/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ class Compiler {
303303
]);
304304
}
305305

306-
if (!(fieldDef.astNode && (fieldDef.astNode as any).__client) && (isClient || fieldIsClient)) {
306+
if (!(fieldDef.astNode && (fieldDef.astNode as any).__client) && fieldIsClient) {
307307
throw new GraphQLError(`Cannot query server-side field "${name}" on type "${String(parentType)}" with @client directive`, [
308308
selectionNode
309309
]);

0 commit comments

Comments
 (0)