Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit b562ecb

Browse files
fix: wrong telemetry folder, correct swagger (#887)
1 parent c6028cf commit b562ecb

File tree

2 files changed

+88
-37
lines changed

2 files changed

+88
-37
lines changed

cortex-js/src/infrastructure/controllers/models.controller.ts

Lines changed: 88 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {
33
Get,
44
Post,
55
Body,
6-
Patch,
76
Param,
87
Delete,
98
HttpCode,
@@ -23,9 +22,7 @@ import { StartModelSuccessDto } from '@/infrastructure/dtos/models/start-model-s
2322
import { TransformInterceptor } from '../interceptors/transform.interceptor';
2423
import { CortexUsecases } from '@/usecases/cortex/cortex.usecases';
2524
import { ModelSettingsDto } from '../dtos/models/model-settings.dto';
26-
import {
27-
EventName,
28-
} from '@/domain/telemetry/telemetry.interface';
25+
import { EventName } from '@/domain/telemetry/telemetry.interface';
2926
import { TelemetryUsecases } from '@/usecases/telemetry/telemetry.usecases';
3027
import { CommonResponseDto } from '../dtos/common/common-response.dto';
3128
import { HuggingFaceRepoSibling } from '@/domain/models/huggingface.interface';
@@ -118,23 +115,53 @@ export class ModelsController {
118115
},
119116
],
120117
})
121-
118+
@ApiParam({
119+
name: 'modelId',
120+
required: true,
121+
description: 'The unique identifier of the model.',
122+
})
123+
@ApiParam({
124+
name: 'fileName',
125+
required: false,
126+
description: 'The file name of the model to download.',
127+
})
128+
@ApiParam({
129+
name: 'persistedModelId',
130+
required: false,
131+
description: 'The unique identifier of the model in your local storage.',
132+
})
122133
@Get('download/:modelId(*)')
123-
downloadModel(@Param('modelId') modelId: string, @Query('fileName') fileName: string, @Query('persistedModelId') persistedModelId?: string) {
124-
this.modelsUsecases.pullModel(modelId, false, (files) => {
125-
return new Promise<HuggingFaceRepoSibling>(async (resolve, reject) => {
126-
const file = files
127-
.find((e) => e.quantization && e.rfilename === fileName)
128-
if(!file) {
129-
return reject(new BadRequestException('File not found'));
130-
}
131-
return resolve(file);
132-
});
133-
}, persistedModelId).then(() => this.telemetryUsecases.addEventToQueue({
134-
name: EventName.DOWNLOAD_MODEL,
135-
modelId,
136-
})
137-
);
134+
downloadModel(
135+
@Param('modelId') modelId: string,
136+
@Query('fileName') fileName: string,
137+
@Query('persistedModelId') persistedModelId?: string,
138+
) {
139+
this.modelsUsecases
140+
.pullModel(
141+
modelId,
142+
false,
143+
(files) => {
144+
return new Promise<HuggingFaceRepoSibling>(
145+
async (resolve, reject) => {
146+
const file = files.find(
147+
(e) =>
148+
e.quantization && (!fileName || e.rfilename === fileName),
149+
);
150+
if (!file) {
151+
return reject(new BadRequestException('File not found'));
152+
}
153+
return resolve(file);
154+
},
155+
);
156+
},
157+
persistedModelId,
158+
)
159+
.then(() =>
160+
this.telemetryUsecases.addEventToQueue({
161+
name: EventName.DOWNLOAD_MODEL,
162+
modelId,
163+
}),
164+
);
138165
return {
139166
message: 'Download model started successfully.',
140167
};
@@ -173,22 +200,48 @@ export class ModelsController {
173200
required: true,
174201
description: 'The unique identifier of the model.',
175202
})
203+
@ApiParam({
204+
name: 'fileName',
205+
required: false,
206+
description: 'The file name of the model to download.',
207+
})
208+
@ApiParam({
209+
name: 'persistedModelId',
210+
required: false,
211+
description: 'The unique identifier of the model in your local storage.',
212+
})
176213
@Get('pull/:modelId(*)')
177-
pullModel(@Param('modelId') modelId: string, @Query('fileName') fileName: string, @Query('persistedModelId') persistedModelId?: string) {
178-
this.modelsUsecases.pullModel(modelId, false, (files) => {
179-
return new Promise<HuggingFaceRepoSibling>(async (resolve, reject) => {
180-
const file = files
181-
.find((e) => e.quantization && e.rfilename === fileName)
182-
if(!file) {
183-
return reject(new BadRequestException('File not found'));
184-
}
185-
return resolve(file);
186-
});
187-
}, persistedModelId).then(() => this.telemetryUsecases.addEventToQueue({
188-
name: EventName.DOWNLOAD_MODEL,
189-
modelId,
190-
})
191-
);
214+
pullModel(
215+
@Param('modelId') modelId: string,
216+
@Query('fileName') fileName?: string,
217+
@Query('persistedModelId') persistedModelId?: string,
218+
) {
219+
this.modelsUsecases
220+
.pullModel(
221+
modelId,
222+
false,
223+
(files) => {
224+
return new Promise<HuggingFaceRepoSibling>(
225+
async (resolve, reject) => {
226+
const file = files.find(
227+
(e) =>
228+
e.quantization && (!fileName || e.rfilename === fileName),
229+
);
230+
if (!file) {
231+
return reject(new BadRequestException('File not found'));
232+
}
233+
return resolve(file);
234+
},
235+
);
236+
},
237+
persistedModelId,
238+
)
239+
.then(() =>
240+
this.telemetryUsecases.addEventToQueue({
241+
name: EventName.DOWNLOAD_MODEL,
242+
modelId,
243+
}),
244+
);
192245
return {
193246
message: 'Download model started successfully.',
194247
};

cortex-js/src/infrastructure/services/file-manager/file-manager.service.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,6 @@ export class FileManagerService {
284284
}
285285
async writeFile(filePath: string, data: any): Promise<void> {
286286
try {
287-
const dirPath = filePath.split('/').slice(0, -1).join('/');
288-
await this.createFolderIfNotExistInDataFolder(dirPath);
289287
return promises.writeFile(filePath, data, {
290288
encoding: 'utf8',
291289
flag: 'w+',

0 commit comments

Comments
 (0)