| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -7,7 +7,13 @@ import { Filter } from '@ghostfolio/common/interfaces'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Injectable } from '@nestjs/common'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { EventEmitter2 } from '@nestjs/event-emitter'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Account, Order, Platform, Prisma } from '@prisma/client'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Account, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  AccountBalance, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Order, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Platform, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  Prisma | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} from '@prisma/client'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { Big } from 'big.js'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { format } from 'date-fns'; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import { groupBy } from 'lodash'; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -56,13 +62,19 @@ export class AccountService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    orderBy?: Prisma.AccountOrderByWithRelationInput; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  }): Promise< | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    (Account & { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      balances?: AccountBalance[]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      Order?: Order[]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      Platform?: Platform; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    })[] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					  > { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const { include = {}, skip, take, cursor, where, orderBy } = params; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    include.balances = { orderBy: { date: 'desc' }, take: 1 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const isBalancesIncluded = !!include.balances; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    include.balances = { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      orderBy: { date: 'desc' }, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      ...(isBalancesIncluded ? {} : { take: 1 }) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    const accounts = await this.prismaService.account.findMany({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      cursor, | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -76,7 +88,9 @@ export class AccountService { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return accounts.map((account) => { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      account = { ...account, balance: account.balances[0]?.value ?? 0 }; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      delete account.balances; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      if (!isBalancesIncluded) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        delete account.balances; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					      return account; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |