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
2322import { TransformInterceptor } from '../interceptors/transform.interceptor' ;
2423import { CortexUsecases } from '@/usecases/cortex/cortex.usecases' ;
2524import { 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' ;
2926import { TelemetryUsecases } from '@/usecases/telemetry/telemetry.usecases' ;
3027import { CommonResponseDto } from '../dtos/common/common-response.dto' ;
3128import { 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 } ;
0 commit comments