| 
						
						
						
					 | 
					@ -1,8 +1,9 @@ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					import { isCrypto, isRakutenRapidApi } from '@ghostfolio/helper'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { Injectable } from '@nestjs/common'; | 
					 | 
					 | 
					import { Injectable } from '@nestjs/common'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { MarketData } from '@prisma/client'; | 
					 | 
					 | 
					import { MarketData } from '@prisma/client'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { format } from 'date-fns'; | 
					 | 
					 | 
					import { format } from 'date-fns'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { isCrypto, isRakutenRapidApi } from 'libs/helper/src'; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					import { ConfigurationService } from './configuration.service'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { AlphaVantageService } from './data-provider/alpha-vantage/alpha-vantage.service'; | 
					 | 
					 | 
					import { AlphaVantageService } from './data-provider/alpha-vantage/alpha-vantage.service'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { RakutenRapidApiService } from './data-provider/rakuten-rapid-api/rakuten-rapid-api.service'; | 
					 | 
					 | 
					import { RakutenRapidApiService } from './data-provider/rakuten-rapid-api/rakuten-rapid-api.service'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import { YahooFinanceService } from './data-provider/yahoo-finance/yahoo-finance.service'; | 
					 | 
					 | 
					import { YahooFinanceService } from './data-provider/yahoo-finance/yahoo-finance.service'; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -17,10 +18,11 @@ import { PrismaService } from './prisma.service'; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					@Injectable() | 
					 | 
					 | 
					@Injectable() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					export class DataProviderService implements DataProviderInterface { | 
					 | 
					 | 
					export class DataProviderService implements DataProviderInterface { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  public constructor( | 
					 | 
					 | 
					  public constructor( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    private alphaVantageService: AlphaVantageService, | 
					 | 
					 | 
					    private readonly alphaVantageService: AlphaVantageService, | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    private readonly configurationService: ConfigurationService, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    private prisma: PrismaService, | 
					 | 
					 | 
					    private prisma: PrismaService, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    private rakutenRapidApiService: RakutenRapidApiService, | 
					 | 
					 | 
					    private readonly rakutenRapidApiService: RakutenRapidApiService, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    private yahooFinanceService: YahooFinanceService | 
					 | 
					 | 
					    private readonly yahooFinanceService: YahooFinanceService | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					  ) { | 
					 | 
					 | 
					  ) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    this.rakutenRapidApiService.setPrisma(this.prisma); | 
					 | 
					 | 
					    this.rakutenRapidApiService.setPrisma(this.prisma); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  } | 
					 | 
					 | 
					  } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -107,7 +109,10 @@ export class DataProviderService implements DataProviderInterface { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if (aSymbols.length === 1) { | 
					 | 
					 | 
					    if (aSymbols.length === 1) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      const symbol = aSymbols[0]; | 
					 | 
					 | 
					      const symbol = aSymbols[0]; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					      if (isCrypto(symbol)) { | 
					 | 
					 | 
					      if ( | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        isCrypto(symbol) && | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.configurationService.get('ALPHA_VANTAGE_API_KEY') | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					      ) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        // Merge data from Yahoo with data from Alpha Vantage
 | 
					 | 
					 | 
					        // Merge data from Yahoo with data from Alpha Vantage
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        const dataOfAlphaVantage = await this.alphaVantageService.getHistorical( | 
					 | 
					 | 
					        const dataOfAlphaVantage = await this.alphaVantageService.getHistorical( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          [symbol], | 
					 | 
					 | 
					          [symbol], | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -122,7 +127,10 @@ export class DataProviderService implements DataProviderInterface { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ...dataOfAlphaVantage[symbol] | 
					 | 
					 | 
					            ...dataOfAlphaVantage[symbol] | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          } | 
					 | 
					 | 
					          } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        }; | 
					 | 
					 | 
					        }; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					      } else if (isRakutenRapidApi(symbol)) { | 
					 | 
					 | 
					      } else if ( | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        isRakutenRapidApi(symbol) && | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        this.configurationService.get('RAKUTEN_RAPID_API_KEY') | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					      ) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        const dataOfRakutenRapidApi = await this.rakutenRapidApiService.getHistorical( | 
					 | 
					 | 
					        const dataOfRakutenRapidApi = await this.rakutenRapidApiService.getHistorical( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          [symbol], | 
					 | 
					 | 
					          [symbol], | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          undefined, | 
					 | 
					 | 
					          undefined, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |