@@ -15,7 +15,6 @@ import { GraphQLID, print } from 'graphql';
1515import { gql } from 'graphql-tag'
1616import { loggerInfo , yellow } from "./logger.js" ;
1717
18- let quiet = false ;
1918// TODO change variables to local scope instead of global so this module can be used against multiple schemas
2019const typesToAdd = [ ] ;
2120const queriesToAdd = [ ] ;
@@ -137,7 +136,7 @@ function injectChanges(schemaModel) {
137136}
138137
139138
140- function addNode ( def ) {
139+ function addNode ( def , { queryPrefix = '' , mutationPrefix = '' } = { } ) {
141140 let name = def . name . value ;
142141 const idField = getIdFieldWithDirective ( def ) ;
143142
@@ -191,34 +190,39 @@ function addNode(def) {
191190 typesToAdd . push ( `input ${ name } Sort {\n${ print ( sortFields ) } \n}` ) ;
192191
193192 // Create query
194- queriesToAdd . push ( `getNode${ name } (filter: ${ name } Input): ${ name } \n` ) ;
195- queriesToAdd . push ( `getNode${ name } s(filter: ${ name } Input, options: Options, sort: [${ name } Sort!]): [${ name } ]\n` ) ;
193+ const getSingleQueryName = `${ queryPrefix } getNode${ name } ` ;
194+ queriesToAdd . push ( `${ getSingleQueryName } (filter: ${ name } Input): ${ name } \n` ) ;
195+ const getMultipleQueryName = `${ queryPrefix } getNode${ name } s` ;
196+ queriesToAdd . push ( `${ getMultipleQueryName } (filter: ${ name } Input, options: Options, sort: [${ name } Sort!]): [${ name } ]\n` ) ;
196197
197198 // Create mutation
198- mutationsToAdd . push ( `createNode${ name } (input: ${ name } CreateInput!): ${ name } \n` ) ;
199- mutationsToAdd . push ( `updateNode${ name } (input: ${ name } UpdateInput!): ${ name } \n` ) ;
200- mutationsToAdd . push ( `deleteNode${ name } (${ print ( idFieldToInputValue ( idField ) ) } ): Boolean\n` ) ;
199+ const createMutationName = `${ mutationPrefix } createNode${ name } ` ;
200+ mutationsToAdd . push ( `${ createMutationName } (input: ${ name } CreateInput!): ${ name } \n` ) ;
201+ const updateMutationName = `${ mutationPrefix } updateNode${ name } ` ;
202+ mutationsToAdd . push ( `${ updateMutationName } (input: ${ name } UpdateInput!): ${ name } \n` ) ;
203+ const deleteMutationName = `${ mutationPrefix } deleteNode${ name } ` ;
204+ mutationsToAdd . push ( `${ deleteMutationName } (${ print ( idFieldToInputValue ( idField ) ) } ): Boolean\n` ) ;
201205
202206 loggerInfo ( `Added input type: ${ yellow ( name + 'Input' ) } ` ) ;
203207 loggerInfo ( `Added input type: ${ yellow ( name + 'CreateInput' ) } ` ) ;
204208 loggerInfo ( `Added input type: ${ yellow ( name + 'UpdateInput' ) } ` ) ;
205- loggerInfo ( `Added query: ${ yellow ( 'getNode' + name ) } ` ) ;
206- loggerInfo ( `Added query: ${ yellow ( 'getNode' + name + 's' ) } ` ) ;
207- loggerInfo ( `Added mutation: ${ yellow ( 'createNode' + name ) } ` ) ;
208- loggerInfo ( `Added mutation: ${ yellow ( 'updateNode' + name ) } ` ) ;
209- loggerInfo ( `Added mutation: ${ yellow ( 'deleteNode' + name ) } ` ) ;
209+ loggerInfo ( `Added query: ${ yellow ( getSingleQueryName ) } ` ) ;
210+ loggerInfo ( `Added query: ${ yellow ( getMultipleQueryName ) } ` ) ;
211+ loggerInfo ( `Added mutation: ${ yellow ( createMutationName ) } ` ) ;
212+ loggerInfo ( `Added mutation: ${ yellow ( updateMutationName ) } ` ) ;
213+ loggerInfo ( `Added mutation: ${ yellow ( deleteMutationName ) } ` ) ;
210214}
211215
212216
213- function addEdge ( from , to , edgeName ) {
217+ function addEdge ( from , to , edgeName , { mutationPrefix = '' } = { } ) {
214218 if ( ! typesToAdd . some ( ( str ) => str . startsWith ( `type ${ edgeName } ` ) ) ) {
215219
216220 // Create type
217221 typesToAdd . push ( `type ${ edgeName } {\n _id: ID! @id\n}` ) ;
218222
219223 // Create mutation
220- mutationsToAdd . push ( `connectNode${ from } ToNode${ to } Edge${ edgeName } (from_id: ID!, to_id: ID!): ${ edgeName } \n` ) ;
221- mutationsToAdd . push ( `deleteEdge${ edgeName } From${ from } To${ to } (from_id: ID!, to_id: ID!): Boolean\n` ) ;
224+ mutationsToAdd . push ( `${ mutationPrefix } connectNode${ from } ToNode${ to } Edge${ edgeName } (from_id: ID!, to_id: ID!): ${ edgeName } \n` ) ;
225+ mutationsToAdd . push ( `${ mutationPrefix } deleteEdge${ edgeName } From${ from } To${ to } (from_id: ID!, to_id: ID!): Boolean\n` ) ;
222226
223227 loggerInfo ( `Added type for edge: ${ yellow ( edgeName ) } ` ) ;
224228 loggerInfo ( `Added mutation: ${ yellow ( `connectNode${ from } ToNode${ to } Edge${ edgeName } ` ) } ` ) ;
@@ -325,7 +329,7 @@ function isScalarOrEnum(type) {
325329}
326330
327331
328- function inferGraphDatabaseDirectives ( schemaModel ) {
332+ function inferGraphDatabaseDirectives ( schemaModel , { queryPrefix = '' , mutationPrefix = '' } = { } ) {
329333
330334 var currentType = '' ;
331335 let referencedType = '' ;
@@ -358,7 +362,7 @@ function inferGraphDatabaseDirectives(schemaModel) {
358362 }
359363 }
360364
361- addNode ( def ) ;
365+ addNode ( def , { queryPrefix , mutationPrefix } ) ;
362366 const edgesTypeToAdd = [ ] ;
363367
364368 // add relationships
@@ -378,7 +382,7 @@ function inferGraphDatabaseDirectives(schemaModel) {
378382 edgeName = referencedType + 'Edge' ;
379383 loggerInfo ( "Infer graph database directive in type: " + yellow ( currentType ) + " field: " + yellow ( field . name . value ) + " referenced type: " + yellow ( referencedType ) + " graph relationship: " + yellow ( edgeName ) ) ;
380384 addRelationshipDirective ( field , edgeName , 'OUT' ) ;
381- addEdge ( currentType , referencedType , edgeName ) ;
385+ addEdge ( currentType , referencedType , edgeName , { mutationPrefix } ) ;
382386 if ( ! edgesTypeToAdd . includes ( edgeName ) ) edgesTypeToAdd . push ( edgeName ) ;
383387 }
384388 catch { }
@@ -394,7 +398,7 @@ function inferGraphDatabaseDirectives(schemaModel) {
394398 edgeName = referencedType + 'Edge' ;
395399 loggerInfo ( "Infer graph database directive in type: " + yellow ( currentType ) + " field: " + yellow ( field . name . value ) + " referenced type: " + yellow ( referencedType ) + " graph relationship: " + yellow ( edgeName ) ) ;
396400 addRelationshipDirective ( field , edgeName , 'OUT' ) ;
397- addEdge ( currentType , referencedType , edgeName ) ;
401+ addEdge ( currentType , referencedType , edgeName , { mutationPrefix } ) ;
398402 if ( ! edgesTypeToAdd . includes ( edgeName ) ) edgesTypeToAdd . push ( edgeName ) ;
399403 }
400404 } ) ;
@@ -429,12 +433,10 @@ function inferGraphDatabaseDirectives(schemaModel) {
429433}
430434
431435
432- function validatedSchemaModel ( schemaModel , quietInput ) {
433- quiet = quietInput ;
434-
436+ function validatedSchemaModel ( schemaModel , { queryPrefix = '' , mutationPrefix = '' } = { } ) {
435437 if ( ! isGraphDBDirectives ( schemaModel ) ) {
436438 loggerInfo ( "The schema model does not contain any graph database directives." ) ;
437- schemaModel = inferGraphDatabaseDirectives ( schemaModel ) ;
439+ schemaModel = inferGraphDatabaseDirectives ( schemaModel , { queryPrefix , mutationPrefix } ) ;
438440 }
439441
440442 return schemaModel ;
0 commit comments