@@ -322,6 +322,7 @@ private async ValueTask PutFiles(IReadOnlyCollection<FileRecord> files, Cancella
322322 var apiVersionSetInformationFiles = files . Choose ( file => file as ApiVersionSetInformationFile ) . ToList ( ) ;
323323 var apiInformationFiles = files . Choose ( file => file as ApiInformationFile ) . ToList ( ) ;
324324 var apiSpecificationFiles = files . Choose ( file => file as ApiSpecificationFile ) . ToList ( ) ;
325+ var apiGraphQLFiles = files . Choose ( file => file as GraphQLSchemaFile ) . ToList ( ) ;
325326 var apiDiagnosticInformationFiles = files . Choose ( file => file as ApiDiagnosticInformationFile ) . ToList ( ) ;
326327 var apiPolicyFiles = files . Choose ( file => file as ApiPolicyFile ) . ToList ( ) ;
327328 var apiOperationPolicyFiles = files . Choose ( file => file as ApiOperationPolicyFile ) . ToList ( ) ;
@@ -337,6 +338,7 @@ private async ValueTask PutFiles(IReadOnlyCollection<FileRecord> files, Cancella
337338 await PutProductPolicyFiles ( productPolicyFiles , cancellationToken ) ;
338339 await PutApiVersionSetInformationFiles ( apiVersionSetInformationFiles , cancellationToken ) ;
339340 await PutApiInformationAndSpecificationFiles ( apiInformationFiles , apiSpecificationFiles , cancellationToken ) ;
341+ await PutApiGraphQLSchemaFiles ( apiGraphQLFiles , cancellationToken ) ;
340342 await PutApiPolicyFiles ( apiPolicyFiles , cancellationToken ) ;
341343 await PutApiDiagnosticInformationFiles ( apiDiagnosticInformationFiles , cancellationToken ) ;
342344 await PutApiOperationPolicyFiles ( apiOperationPolicyFiles , cancellationToken ) ;
@@ -359,6 +361,7 @@ private async ValueTask PutFiles(IReadOnlyCollection<FileRecord> files, Cancella
359361 ?? DiagnosticInformationFile . TryFrom ( serviceDirectory , file ) as FileRecord
360362 ?? ApiVersionSetInformationFile . TryFrom ( serviceDirectory , file ) as FileRecord
361363 ?? ApiInformationFile . TryFrom ( serviceDirectory , file ) as FileRecord
364+ ?? GraphQLSchemaFile . TryFrom ( serviceDirectory , file ) as FileRecord
362365 ?? ApiSpecificationFile . TryFrom ( serviceDirectory , file ) as FileRecord
363366 ?? ApiDiagnosticInformationFile . TryFrom ( serviceDirectory , file ) as FileRecord
364367 ?? ApiPolicyFile . TryFrom ( serviceDirectory , file ) as FileRecord
@@ -959,6 +962,18 @@ private async ValueTask PutApiInformationAndSpecificationFiles(IReadOnlyCollecti
959962 if ( splitCurrentRevisions . TryGetValue ( "Current" , out var currentRevisions ) ) await Parallel . ForEachAsync ( currentRevisions , cancellationToken , ( filePair , cancellationToken ) => PutApi ( filePair . Api , filePair . SpecificationFile , cancellationToken ) ) ;
960963 if ( splitCurrentRevisions . TryGetValue ( "NonCurrentRevisions" , out var nonCurrentRevisions ) ) await Parallel . ForEachAsync ( nonCurrentRevisions , cancellationToken , ( filePair , cancellationToken ) => PutApi ( filePair . Api , filePair . SpecificationFile , cancellationToken ) ) ;
961964 }
965+
966+ private async ValueTask PutApiGraphQLSchemaFiles ( IReadOnlyCollection < GraphQLSchemaFile > schemaFiles , CancellationToken cancellationToken )
967+ {
968+ var apiSchemaPair = schemaFiles . Select ( schemaFile =>
969+ {
970+ var apiJson = ApiInformationFile . From ( schemaFile . ApiDirectory ) . ReadAsJsonObject ( ) ;
971+ var api = Api . Deserialize ( apiJson ) ;
972+ return ( Api : api , SchemaFile : schemaFile ) ;
973+ } ) ;
974+
975+ await Parallel . ForEachAsync ( apiSchemaPair , cancellationToken , ( apiSchemaPair , cancellationToken ) => PutApiGraphQLSchema ( apiSchemaPair . Api , apiSchemaPair . SchemaFile , cancellationToken ) ) ;
976+ }
962977
963978 private async ValueTask PutPolicyFragments ( IReadOnlyCollection < PolicyFragmentInformationFile > informationFiles , IReadOnlyCollection < PolicyFragmentPolicyFile > policyFiles , CancellationToken cancellationToken )
964979 {
@@ -1047,6 +1062,15 @@ private async ValueTask PutApi(common.Models.Api api, ApiSpecificationFile? spec
10471062 await Api . Put ( putResource , serviceProviderUri , serviceName , api , cancellationToken ) ;
10481063 }
10491064
1065+ private async ValueTask PutApiGraphQLSchema ( common . Models . Api api , GraphQLSchemaFile schemaFile , CancellationToken cancellationToken )
1066+ {
1067+ logger . LogInformation ( "Putting API GraphQL Schema for {api}..." , api . Name ) ;
1068+ var apiName = ApiName . From ( api . Name ) ;
1069+ var schemaText = await schemaFile . ReadAsText ( cancellationToken ) ?? throw new InvalidOperationException ( $ "Could not read GraphQL schema file for API { api . Name } .") ;
1070+
1071+ await ApiSchema . PutGraphQL ( putResource , serviceProviderUri , serviceName , apiName , schemaText , cancellationToken ) ;
1072+ }
1073+
10501074 private async ValueTask DeleteApis ( IReadOnlyCollection < ApiInformationFile > files , CancellationToken cancellationToken )
10511075 {
10521076 await Parallel . ForEachAsync ( files , cancellationToken , DeleteApi ) ;
0 commit comments