@@ -7,6 +7,7 @@ import { ID, many, Many, ObjectView, ServerException, Session } from '~/common';
7
7
import { BaseNode } from '../database/results' ;
8
8
import { ILogger , Logger } from '../logger' ;
9
9
import { ResourceMap } from './map' ;
10
+ import { ResourcesHost } from './resources.host' ;
10
11
11
12
const RESOLVE_BY_ID = 'RESOLVE_BY_ID' ;
12
13
interface Shape {
@@ -48,6 +49,7 @@ export class ResourceResolver {
48
49
49
50
constructor (
50
51
private readonly discover : DiscoveryService ,
52
+ private readonly resourcesHost : ResourcesHost ,
51
53
private readonly schemaHost : GraphQLSchemaHost ,
52
54
@Logger ( 'resource-resolver' ) private readonly logger : ILogger ,
53
55
) { }
@@ -144,13 +146,19 @@ export class ResourceResolver {
144
146
const names = many ( types ) . map ( ( t ) => t . replace ( / ^ D e l e t e d _ / , '' ) ) ;
145
147
146
148
const schema = this . schemaHost . schema ;
147
- const resolved = names . filter (
148
- ( name ) => schema . getType ( name ) instanceof GraphQLObjectType ,
149
- ) ;
149
+ const resolved = names
150
+ . flatMap ( ( name ) => {
151
+ try {
152
+ return this . resourcesHost . getByDynamicName ( name ) . name ;
153
+ } catch ( e ) {
154
+ // Ignore names/`labels` that don't have corresponding resources.
155
+ return [ ] ;
156
+ }
157
+ } )
158
+ . filter ( ( name ) => schema . getType ( name ) instanceof GraphQLObjectType ) ;
150
159
151
160
if ( resolved . length === 1 ) {
152
- // This is mostly true...
153
- return resolved [ 0 ] as keyof ResourceMap ;
161
+ return resolved [ 0 ] ;
154
162
}
155
163
156
164
const namesStr = names . join ( ', ' ) ;
0 commit comments