@@ -24,12 +24,32 @@ export const createImports = ({
2424 . getSourceFiles ( )
2525 . find ( ( sourceFile ) => sourceFile . getFilePath ( ) . includes ( "models.ts" ) ) ;
2626
27+ const serviceFile = project
28+ . getSourceFiles ( )
29+ . find ( ( sourceFile ) => sourceFile . getFilePath ( ) . includes ( "services.ts" ) ) ;
30+
2731 if ( ! modelsFile ) {
2832 throw new Error ( "No models file found" ) ;
2933 }
3034
35+ if ( ! serviceFile ) {
36+ throw new Error ( "No service file found" ) ;
37+ }
38+
3139 const modalNames = Array . from ( modelsFile . getExportedDeclarations ( ) . keys ( ) ) ;
3240
41+ const serviceExports = Array . from (
42+ serviceFile . getExportedDeclarations ( ) . keys ( )
43+ ) ;
44+
45+ const serviceNames = serviceExports . filter ( ( name ) =>
46+ name . endsWith ( serviceEndName )
47+ ) ;
48+
49+ const serviceNamesData = serviceExports . filter ( ( name ) =>
50+ name . endsWith ( "Data" )
51+ ) ;
52+
3353 return [
3454 ts . factory . createImportDeclaration (
3555 undefined ,
@@ -77,48 +97,33 @@ export const createImports = ({
7797 ts . factory . createStringLiteral ( "@tanstack/react-query" ) ,
7898 undefined
7999 ) ,
80- // import all class names from service file
81- ...uniqueClassNames . map ( ( className ) => {
82- return ts . factory . createImportDeclaration (
100+ ts . factory . createImportDeclaration (
101+ undefined ,
102+ ts . factory . createImportClause (
103+ false ,
83104 undefined ,
84- ts . factory . createImportClause (
85- false ,
86- undefined ,
87- ts . factory . createNamedImports ( [
105+ ts . factory . createNamedImports ( [
106+ // import all class names from service file
107+ ...serviceNames . map ( ( serviceName ) =>
88108 ts . factory . createImportSpecifier (
89109 false ,
90110 undefined ,
91- ts . factory . createIdentifier ( className )
92- ) ,
93- ] )
94- ) ,
95- ts . factory . createStringLiteral ( join ( "../requests" ) ) ,
96- undefined
97- ) ;
98- } ) ,
99- // import all data objects from service file
100- ...uniqueClassNames . map ( ( className ) => {
101- // remove serviceEndName from the end of class name
102- // TODO: we should use a better way to remove the serviceEndName from the end of the class name
103- const classNameData = className . replace ( serviceEndName , "" ) ;
104-
105- return ts . factory . createImportDeclaration (
106- undefined ,
107- ts . factory . createImportClause (
108- false ,
109- undefined ,
110- ts . factory . createNamedImports ( [
111+ ts . factory . createIdentifier ( serviceName )
112+ )
113+ ) ,
114+ // import all data objects from service file
115+ ...serviceNamesData . map ( ( dataName ) =>
111116 ts . factory . createImportSpecifier (
112117 false ,
113118 undefined ,
114- ts . factory . createIdentifier ( ` ${ classNameData } Data` )
115- ) ,
116- ] )
117- ) ,
118- ts . factory . createStringLiteral ( join ( "../requests" ) ) ,
119- undefined
120- ) ;
121- } ) ,
119+ ts . factory . createIdentifier ( dataName )
120+ )
121+ ) ,
122+ ] )
123+ ) ,
124+ ts . factory . createStringLiteral ( join ( "../requests" ) ) ,
125+ undefined
126+ ) ,
122127 // import all the models by name
123128 ts . factory . createImportDeclaration (
124129 undefined ,
0 commit comments