1
1
import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator' ;
2
2
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' ;
3
+ import { ApiService } from '@ghostfolio/api/services/api/api.service' ;
3
4
import {
4
5
DEFAULT_CURRENCY ,
5
6
DEFAULT_LANGUAGE_CODE
@@ -8,7 +9,14 @@ import { AiPromptResponse } from '@ghostfolio/common/interfaces';
8
9
import { permissions } from '@ghostfolio/common/permissions' ;
9
10
import type { AiPromptMode , RequestWithUser } from '@ghostfolio/common/types' ;
10
11
11
- import { Controller , Get , Inject , Param , UseGuards } from '@nestjs/common' ;
12
+ import {
13
+ Controller ,
14
+ Get ,
15
+ Inject ,
16
+ Param ,
17
+ Query ,
18
+ UseGuards
19
+ } from '@nestjs/common' ;
12
20
import { REQUEST } from '@nestjs/core' ;
13
21
import { AuthGuard } from '@nestjs/passport' ;
14
22
@@ -18,16 +26,31 @@ import { AiService } from './ai.service';
18
26
export class AiController {
19
27
public constructor (
20
28
private readonly aiService : AiService ,
29
+ private readonly apiService : ApiService ,
21
30
@Inject ( REQUEST ) private readonly request : RequestWithUser
22
31
) { }
23
32
24
33
@Get ( 'prompt/:mode' )
25
34
@HasPermission ( permissions . readAiPrompt )
26
35
@UseGuards ( AuthGuard ( 'jwt' ) , HasPermissionGuard )
27
36
public async getPrompt (
28
- @Param ( 'mode' ) mode : AiPromptMode
37
+ @Param ( 'mode' ) mode : AiPromptMode ,
38
+ @Query ( 'accounts' ) filterByAccounts ?: string ,
39
+ @Query ( 'assetClasses' ) filterByAssetClasses ?: string ,
40
+ @Query ( 'dataSource' ) filterByDataSource ?: string ,
41
+ @Query ( 'symbol' ) filterBySymbol ?: string ,
42
+ @Query ( 'tags' ) filterByTags ?: string
29
43
) : Promise < AiPromptResponse > {
44
+ const filters = this . apiService . buildFiltersFromQueryParams ( {
45
+ filterByAccounts,
46
+ filterByAssetClasses,
47
+ filterByDataSource,
48
+ filterBySymbol,
49
+ filterByTags
50
+ } ) ;
51
+
30
52
const prompt = await this . aiService . getPrompt ( {
53
+ filters,
31
54
mode,
32
55
impersonationId : undefined ,
33
56
languageCode :
0 commit comments