@@ -6,7 +6,7 @@ partial class EfGraphQLService<TDbContext>
66 public FieldBuilder < object , TReturn > AddFirstField < TReturn > (
77 IObjectGraphType graph ,
88 string name ,
9- Func < ResolveEfFieldContext < TDbContext , object > , IQueryable < TReturn > > resolve ,
9+ Func < ResolveEfFieldContext < TDbContext , object > , IQueryable < TReturn > ? > resolve ,
1010 Func < ResolveEfFieldContext < TDbContext , object > , TReturn , Task > ? mutate = null ,
1111 Type ? graphType = null ,
1212 bool nullable = false ,
@@ -22,7 +22,7 @@ public FieldBuilder<object, TReturn> AddFirstField<TReturn>(
2222 public FieldBuilder < object , TReturn > AddFirstField < TReturn > (
2323 IObjectGraphType graph ,
2424 string name ,
25- Func < ResolveEfFieldContext < TDbContext , object > , Task < IQueryable < TReturn > > > resolve ,
25+ Func < ResolveEfFieldContext < TDbContext , object > , Task < IQueryable < TReturn > ? > ? > resolve ,
2626 Func < ResolveEfFieldContext < TDbContext , object > , TReturn , Task > ? mutate = null ,
2727 Type ? graphType = null ,
2828 bool nullable = false ,
@@ -38,7 +38,7 @@ public FieldBuilder<object, TReturn> AddFirstField<TReturn>(
3838 public FieldBuilder < object , TReturn > AddFirstField < TReturn > (
3939 IComplexGraphType graph ,
4040 string name ,
41- Func < ResolveEfFieldContext < TDbContext , object > , IQueryable < TReturn > > resolve ,
41+ Func < ResolveEfFieldContext < TDbContext , object > , IQueryable < TReturn > ? > resolve ,
4242 Func < ResolveEfFieldContext < TDbContext , object > , TReturn , Task > ? mutate = null ,
4343 Type ? graphType = null ,
4444 bool nullable = false ,
@@ -54,7 +54,7 @@ public FieldBuilder<object, TReturn> AddFirstField<TReturn>(
5454 public FieldBuilder < object , TReturn > AddFirstField < TReturn > (
5555 IComplexGraphType graph ,
5656 string name ,
57- Func < ResolveEfFieldContext < TDbContext , object > , Task < IQueryable < TReturn > > > resolve ,
57+ Func < ResolveEfFieldContext < TDbContext , object > , Task < IQueryable < TReturn > ? > ? > resolve ,
5858 Func < ResolveEfFieldContext < TDbContext , object > , TReturn , Task > ? mutate = null ,
5959 Type ? graphType = null ,
6060 bool nullable = false ,
@@ -70,7 +70,7 @@ public FieldBuilder<object, TReturn> AddFirstField<TReturn>(
7070 public FieldBuilder < TSource , TReturn > AddFirstField < TSource , TReturn > (
7171 IComplexGraphType graph ,
7272 string name ,
73- Func < ResolveEfFieldContext < TDbContext , TSource > , IQueryable < TReturn > > resolve ,
73+ Func < ResolveEfFieldContext < TDbContext , TSource > , IQueryable < TReturn > ? > resolve ,
7474 Func < ResolveEfFieldContext < TDbContext , TSource > , TReturn , Task > ? mutate = null ,
7575 Type ? graphType = null ,
7676 bool nullable = false ,
@@ -86,7 +86,7 @@ public FieldBuilder<TSource, TReturn> AddFirstField<TSource, TReturn>(
8686 public FieldBuilder < TSource , TReturn > AddFirstField < TSource , TReturn > (
8787 IComplexGraphType graph ,
8888 string name ,
89- Func < ResolveEfFieldContext < TDbContext , TSource > , Task < IQueryable < TReturn > > > resolve ,
89+ Func < ResolveEfFieldContext < TDbContext , TSource > , Task < IQueryable < TReturn > ? > ? > resolve ,
9090 Func < ResolveEfFieldContext < TDbContext , TSource > , TReturn , Task > ? mutate = null ,
9191 Type ? graphType = null ,
9292 bool nullable = false ,
@@ -101,7 +101,7 @@ public FieldBuilder<TSource, TReturn> AddFirstField<TSource, TReturn>(
101101
102102 FieldType BuildFirstField < TSource , TReturn > (
103103 string name ,
104- Func < ResolveEfFieldContext < TDbContext , TSource > , IQueryable < TReturn > > resolve ,
104+ Func < ResolveEfFieldContext < TDbContext , TSource > , IQueryable < TReturn > ? > resolve ,
105105 Func < ResolveEfFieldContext < TDbContext , TSource > , TReturn , Task > ? mutate ,
106106 Type ? graphType ,
107107 bool nullable ,
@@ -123,7 +123,7 @@ FieldType BuildFirstField<TSource, TReturn>(
123123
124124 FieldType BuildFirstField < TSource , TReturn > (
125125 string name ,
126- Func < ResolveEfFieldContext < TDbContext , TSource > , Task < IQueryable < TReturn > > > resolve ,
126+ Func < ResolveEfFieldContext < TDbContext , TSource > , Task < IQueryable < TReturn > ? > ? > resolve ,
127127 Func < ResolveEfFieldContext < TDbContext , TSource > , TReturn , Task > ? mutate ,
128128 Type ? graphType ,
129129 bool nullable ,
@@ -143,9 +143,20 @@ FieldType BuildFirstField<TSource, TReturn>(
143143 Type = graphType ,
144144 Resolver = new FuncFieldResolver < TSource , TReturn ? > ( async context =>
145145 {
146- var efFieldContext = BuildContext ( context ) ;
146+ var fieldContext = BuildContext ( context ) ;
147+
148+ var task = resolve ( fieldContext ) ;
149+ if ( task == null )
150+ {
151+ return ReturnNullable ( ) ;
152+ }
153+
154+ var query = await task ;
155+ if ( query == null )
156+ {
157+ return ReturnNullable ( ) ;
158+ }
147159
148- var query = await resolve ( efFieldContext ) ;
149160 if ( disableTracking )
150161 {
151162 query = query . AsNoTracking ( ) ;
@@ -187,24 +198,19 @@ FieldType BuildFirstField<TSource, TReturn>(
187198
188199 if ( first is not null )
189200 {
190- if ( efFieldContext . Filters == null ||
191- await efFieldContext . Filters . ShouldInclude ( context . UserContext , efFieldContext . DbContext , context . User , first ) )
201+ if ( fieldContext . Filters == null ||
202+ await fieldContext . Filters . ShouldInclude ( context . UserContext , fieldContext . DbContext , context . User , first ) )
192203 {
193204 if ( mutate is not null )
194205 {
195- await mutate . Invoke ( efFieldContext , first ) ;
206+ await mutate . Invoke ( fieldContext , first ) ;
196207 }
197208
198209 return first ;
199210 }
200211 }
201212
202- if ( nullable )
203- {
204- return null ;
205- }
206-
207- throw new FirstEntityNotFoundException ( ) ;
213+ return ReturnNullable ( ) ;
208214 } )
209215 } ;
210216
@@ -214,5 +220,8 @@ await efFieldContext.Filters.ShouldInclude(context.UserContext, efFieldContext.D
214220 }
215221
216222 return type ;
223+
224+ TReturn ? ReturnNullable ( ) =>
225+ nullable ? null : throw new FirstEntityNotFoundException ( ) ;
217226 }
218227}
0 commit comments