1- 'use strict' ;
2- const { generateCollectionScript } = require ( './services/protoScriptGenerationService' ) ;
3- const { setDependencies, dependencies } = require ( '../reverse_engineering/appDependencies' ) ;
4- const RECORD_NAME_STRATEGY = 'RecordNameStrategy' ;
5- const TOPIC_RECORD_NAME_STRATEGY = 'TopicRecordNameStrategy' ;
6- const protobufjs = require ( 'protobufjs' ) ;
7- const descriptor = require ( 'protobufjs/ext/descriptor' ) ;
1+ const _ = require ( 'lodash' ) ;
82const { formatComment } = require ( './helpers/utils' ) ;
3+ const { prepareScript } = require ( './helpers/prepareScript' ) ;
4+ const { generateCollectionScript } = require ( './services/protoScriptGenerationService' ) ;
95
106const defaultContainerData = [
117 {
@@ -17,11 +13,8 @@ const defaultContainerData = [
1713
1814module . exports = {
1915 generateContainerScript ( data , logger , callback , app ) {
20- setDependencies ( app ) ;
21- const _ = dependencies . lodash ;
2216 const containerData = ! _ . isEmpty ( data . containerData ) ? data . containerData : defaultContainerData ;
2317 try {
24- const _ = dependencies . lodash ;
2518 let preparedData = {
2619 ...data ,
2720 containerData,
@@ -69,7 +62,7 @@ module.exports = {
6962 ]
7063 . filter ( row => row !== '' )
7164 . join ( '\n' ) ;
72- callback ( null , this . prepareScript ( script , preparedData ) ) ;
65+ callback ( null , prepareScript ( script , preparedData ) ) ;
7366 } catch ( error ) {
7467 const errorObject = {
7568 message : error . message ,
@@ -80,12 +73,10 @@ module.exports = {
8073 callback ( errorObject ) ;
8174 }
8275 } ,
76+
8377 generateScript ( data , logger , callback , app ) {
84- setDependencies ( app ) ;
85- const _ = dependencies . lodash ;
8678 const containerData = ! _ . isEmpty ( data . containerData ) ? data . containerData : defaultContainerData ;
8779 try {
88- const _ = dependencies . lodash ;
8980 let preparedData = {
9081 ...data ,
9182 containerData,
@@ -105,7 +96,7 @@ module.exports = {
10596 ]
10697 . filter ( row => row !== '' )
10798 . join ( '\n' ) ;
108- callback ( null , this . prepareScript ( script , preparedData ) ) ;
99+ callback ( null , prepareScript ( script , preparedData ) ) ;
109100 } catch ( error ) {
110101 const errorObject = {
111102 message : error . message ,
@@ -115,75 +106,4 @@ module.exports = {
115106 callback ( errorObject ) ;
116107 }
117108 } ,
118-
119- prepareScript ( script , data ) {
120- const _ = dependencies . lodash ;
121- const targetSchemaRegistry = _ . get ( data , 'options.targetScriptOptions.keyword' ) ;
122- if ( targetSchemaRegistry === 'confluentSchemaRegistry' ) {
123- return this . getConfluentPostQuery ( { data, schema : script } ) ;
124- }
125- if ( targetSchemaRegistry === 'pulsarSchemaRegistry' ) {
126- return this . getPulsarPostQuery ( { data, schema : script } ) ;
127- }
128-
129- return script ;
130- } ,
131-
132- getPulsarPostQuery ( { data, schema } ) {
133- const _ = dependencies . lodash ;
134- const root = protobufjs . parse ( schema ) . root ;
135- const descriptorMsg = root . toDescriptor ( 'proto3' ) ;
136- const buffer = descriptor . FileDescriptorSet . encode ( descriptorMsg ) . finish ( ) ;
137- const fileDescriptorSet = buffer . toString ( 'base64' ) ;
138- const descriptorJson = descriptorMsg . toJSON ( ) ;
139- const rootMessageTypeName = `${ _ . get ( descriptorJson , 'file[0].package' ) } .${ _ . get ( descriptorJson , 'file[0].messageType[0].name' ) } ` ;
140- const rootFileDescriptorName = _ . get ( descriptorJson , 'file[0].name' ) ;
141- const body = {
142- fileDescriptorSet,
143- rootMessageTypeName,
144- rootFileDescriptorName,
145- } ;
146- const bodyObject = {
147- type : 'PROTOBUF_NATIVE' ,
148- data : body ,
149- properties : { } ,
150- } ;
151- const namespace = _ . get ( data , 'containerData[0].name' , '' ) ;
152- const topic = _ . get ( data , 'containerData[0].pulsarTopicName' , '' ) ;
153- const persistence = _ . get ( data , 'containerData[0].isNonPersistentTopic' , false )
154- ? 'non-persistent'
155- : 'persistent' ;
156- return `POST /${ persistence } /${ namespace } /${ topic } /schema\n\n${ JSON . stringify ( bodyObject , null , 4 ) } ` ;
157- } ,
158-
159- getConfluentPostQuery ( { data, schema } ) {
160- const getName = ( ) => {
161- const _ = dependencies . lodash ;
162- const name = this . getRecordName ( data ) ;
163-
164- const schemaType = _ . get ( data , 'containerData[0].schemaType' ) ;
165- const containerName = _ . get ( data , 'containerData[0].name' ) ;
166- const topic = _ . get ( data , 'modelData[0].schemaTopic' ) ;
167-
168- const typePostfix = schemaType ? `-${ schemaType } ` : '' ;
169- const containerPrefix = containerName ? `${ containerName } .` : '' ;
170- const topicPrefix = topic ? `${ topic } -` : '' ;
171-
172- const schemaNameStrategy = _ . get ( data , 'modelData[0].schemaNameStrategy' , '' ) ;
173- switch ( schemaNameStrategy ) {
174- case RECORD_NAME_STRATEGY :
175- return `${ containerPrefix } ${ name } ${ typePostfix } ` ;
176- case TOPIC_RECORD_NAME_STRATEGY :
177- return `${ topicPrefix } ${ containerPrefix } ${ name } ${ typePostfix } ` ;
178- default :
179- return `${ name } ${ typePostfix } ` ;
180- }
181- } ;
182-
183- return `POST /subjects/${ getName ( ) } /versions\n\n${ schema } ` ;
184- } ,
185-
186- getRecordName ( data ) {
187- return data . containerData [ 0 ] . code || data . containerData [ 0 ] . name || data . containerData [ 0 ] . collectionName ;
188- } ,
189109} ;
0 commit comments