Skip to content

Commit a192be5

Browse files
committed
chore: update examples to include @OneOf
1 parent 632607c commit a192be5

File tree

4 files changed

+47
-38
lines changed

4 files changed

+47
-38
lines changed

example/test.graphql

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,25 @@ directive @constraint(
122122
uniqueTypeName: String
123123
) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION
124124

125+
directive @oneOf on INPUT_OBJECT | FIELD_DEFINITION
126+
125127
type Comment {
126128
replies: [Comment!]
127129
}
130+
131+
# @oneOf examples - exactly one field must be provided
132+
input SearchFilter @oneOf {
133+
userId: ID
134+
email: String
135+
username: String
136+
}
137+
138+
input MediaInput @oneOf {
139+
url: URL
140+
file: FileInput
141+
}
142+
143+
input FileInput {
144+
name: String!
145+
size: Int!
146+
}

example/types.ts

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@ export type Admin = {
2121
lastModifiedAt?: Maybe<Scalars['Date']['output']>;
2222
};
2323

24-
export type AttributeInput = {
25-
key?: InputMaybe<Scalars['String']['input']>;
26-
val?: InputMaybe<Scalars['String']['input']>;
27-
};
24+
export type AttributeInput =
25+
{ key: Scalars['String']['input']; val?: never; }
26+
| { key?: never; val: Scalars['String']['input']; };
2827

2928
export enum ButtonComponentType {
3029
Button = 'BUTTON',
@@ -36,18 +35,16 @@ export type Comment = {
3635
replies?: Maybe<Array<Comment>>;
3736
};
3837

39-
export type ComponentInput = {
40-
child?: InputMaybe<ComponentInput>;
41-
childrens?: InputMaybe<Array<InputMaybe<ComponentInput>>>;
42-
event?: InputMaybe<EventInput>;
43-
name: Scalars['String']['input'];
44-
type: ButtonComponentType;
45-
};
38+
export type ComponentInput =
39+
{ child: ComponentInput; childrens?: never; event?: never; name?: never; type?: never; }
40+
| { child?: never; childrens: Array<InputMaybe<ComponentInput>>; event?: never; name?: never; type?: never; }
41+
| { child?: never; childrens?: never; event: EventInput; name?: never; type?: never; }
42+
| { child?: never; childrens?: never; event?: never; name: Scalars['String']['input']; type?: never; }
43+
| { child?: never; childrens?: never; event?: never; name?: never; type: ButtonComponentType; };
4644

47-
export type DropDownComponentInput = {
48-
dropdownComponent?: InputMaybe<ComponentInput>;
49-
getEvent: EventInput;
50-
};
45+
export type DropDownComponentInput =
46+
{ dropdownComponent: ComponentInput; getEvent?: never; }
47+
| { dropdownComponent?: never; getEvent: EventInput; };
5148

5249
export type EventArgumentInput = {
5350
name: Scalars['String']['input'];
@@ -69,10 +66,9 @@ export type Guest = {
6966
lastLoggedIn?: Maybe<Scalars['Date']['output']>;
7067
};
7168

72-
export type HttpInput = {
73-
method?: InputMaybe<HttpMethod>;
74-
url: Scalars['URL']['input'];
75-
};
69+
export type HttpInput =
70+
{ method: HttpMethod; url?: never; }
71+
| { method?: never; url: Scalars['URL']['input']; };
7672

7773
export enum HttpMethod {
7874
Get = 'GET',
@@ -100,19 +96,19 @@ export type Namer = {
10096
name?: Maybe<Scalars['String']['output']>;
10197
};
10298

103-
export type PageInput = {
104-
attributes?: InputMaybe<Array<AttributeInput>>;
105-
date?: InputMaybe<Scalars['Date']['input']>;
106-
height: Scalars['Float']['input'];
107-
id: Scalars['ID']['input'];
108-
layout: LayoutInput;
109-
pageType: PageType;
110-
postIDs?: InputMaybe<Array<Scalars['ID']['input']>>;
111-
show: Scalars['Boolean']['input'];
112-
tags?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>>>;
113-
title: Scalars['String']['input'];
114-
width: Scalars['Int']['input'];
115-
};
99+
export type PageInput =
100+
{ attributes: Array<AttributeInput>; date?: never; height?: never; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title?: never; width?: never; }
101+
| { attributes?: never; date: Scalars['Date']['input']; height?: never; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title?: never; width?: never; }
102+
| { attributes?: never; date?: never; height: Scalars['Float']['input']; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title?: never; width?: never; }
103+
| { attributes?: never; date?: never; height?: never; id: Scalars['ID']['input']; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title?: never; width?: never; }
104+
| { attributes?: never; date?: never; height?: never; id?: never; layout: LayoutInput; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title?: never; width?: never; }
105+
| { attributes?: never; date?: never; height?: never; id?: never; layout?: never; pageType: PageType; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title?: never; width?: never; }
106+
| { attributes?: never; date?: never; height?: never; id?: never; layout?: never; pageType?: never; postIDs: Array<InputMaybe<Array<InputMaybe<Scalars['ID']['input']>>>>; postIDs2?: never; show?: never; tags?: never; title?: never; width?: never; }
107+
| { attributes?: never; date?: never; height?: never; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2: Array<Array<InputMaybe<Scalars['ID']['input']>>>; show?: never; tags?: never; title?: never; width?: never; }
108+
| { attributes?: never; date?: never; height?: never; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show: Scalars['Boolean']['input']; tags?: never; title?: never; width?: never; }
109+
| { attributes?: never; date?: never; height?: never; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags: Array<InputMaybe<Scalars['String']['input']>>; title?: never; width?: never; }
110+
| { attributes?: never; date?: never; height?: never; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title: Scalars['String']['input']; width?: never; }
111+
| { attributes?: never; date?: never; height?: never; id?: never; layout?: never; pageType?: never; postIDs?: never; postIDs2?: never; show?: never; tags?: never; title?: never; width: Scalars['Int']['input']; };
116112

117113
export enum PageType {
118114
BasicAuth = 'BASIC_AUTH',

src/zod/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,6 @@ export class ZodSchemaVisitor extends BaseSchemaVisitor {
288288
visitor: Visitor,
289289
name: string,
290290
) {
291-
// FIXME: If I end up adding an explicit z.ZodUnion return type, make sure to handle schemaNamespacedImportName
292-
// Also type prefix and suffix
293-
294291
const typeName = visitor.prefixTypeNamespace(name);
295292
const union = generateFieldUnionZodSchema(this.config, visitor, fields, 2)
296293

src/zodv4/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,9 +297,6 @@ export class ZodV4SchemaVisitor extends BaseSchemaVisitor {
297297
visitor: Visitor,
298298
name: string,
299299
) {
300-
// FIXME: If I end up adding an explicit z.ZodUnion return type, make sure to handle schemaNamespacedImportName
301-
// Also type prefix and suffix
302-
303300
const typeName = visitor.prefixTypeNamespace(name);
304301
const union = generateFieldUnionZodSchema(this.config, visitor, fields, 2)
305302

0 commit comments

Comments
 (0)