Fix: Position Manager initialization race condition in API endpoints

- Changed /api/trading/positions to use getInitializedPositionManager()
- Changed /api/trading/test to use getInitializedPositionManager()
- Changed /api/trading/test-db to use getInitializedPositionManager()
- These endpoints were accessing Position Manager before DB restore completed
- Now properly wait for async initialization before accessing trade data
- Fixes /status Telegram command showing empty despite active positions
This commit is contained in:
mindesbunister
2025-10-27 23:38:24 +01:00
parent 9bf83260c4
commit a72ddd8f0e
3 changed files with 6 additions and 6 deletions

View File

@@ -6,7 +6,7 @@
*/
import { NextRequest, NextResponse } from 'next/server'
import { getPositionManager } from '@/lib/trading/position-manager'
import { getInitializedPositionManager } from '@/lib/trading/position-manager'
export interface PositionsResponse {
success: boolean
@@ -57,7 +57,7 @@ export async function GET(request: NextRequest): Promise<NextResponse<PositionsR
)
}
const positionManager = getPositionManager()
const positionManager = await getInitializedPositionManager()
const status = positionManager.getStatus()
const trades = positionManager.getActiveTrades()

View File

@@ -9,7 +9,7 @@ import { NextRequest, NextResponse } from 'next/server'
import { initializeDriftService } from '@/lib/drift/client'
import { openPosition, placeExitOrders } from '@/lib/drift/orders'
import { getMergedConfig } from '@/config/trading'
import { getPositionManager, ActiveTrade } from '@/lib/trading/position-manager'
import { getInitializedPositionManager, ActiveTrade } from '@/lib/trading/position-manager'
import { createTrade } from '@/lib/database/trades'
export interface TestTradeRequest {
@@ -184,7 +184,7 @@ export async function POST(request: NextRequest): Promise<NextResponse<TestTrade
}
// Add to position manager
const positionManager = getPositionManager()
const positionManager = await getInitializedPositionManager()
await positionManager.addTrade(activeTrade)
console.log('✅ Test trade added to position manager')

View File

@@ -10,7 +10,7 @@ import { initializeDriftService } from '@/lib/drift/client'
import { openPosition, placeExitOrders } from '@/lib/drift/orders'
import { normalizeTradingViewSymbol } from '@/config/trading'
import { getMergedConfig } from '@/config/trading'
import { getPositionManager, ActiveTrade } from '@/lib/trading/position-manager'
import { getInitializedPositionManager, ActiveTrade } from '@/lib/trading/position-manager'
import { createTrade } from '@/lib/database/trades'
export interface TestTradeRequest {
@@ -183,7 +183,7 @@ export async function POST(request: NextRequest): Promise<NextResponse<TestTrade
}
// Add to position manager for monitoring
const positionManager = getPositionManager()
const positionManager = await getInitializedPositionManager()
await positionManager.addTrade(activeTrade)
console.log('✅ Trade added to position manager for monitoring')