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:
@@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { NextRequest, NextResponse } from 'next/server'
|
import { NextRequest, NextResponse } from 'next/server'
|
||||||
import { getPositionManager } from '@/lib/trading/position-manager'
|
import { getInitializedPositionManager } from '@/lib/trading/position-manager'
|
||||||
|
|
||||||
export interface PositionsResponse {
|
export interface PositionsResponse {
|
||||||
success: boolean
|
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 status = positionManager.getStatus()
|
||||||
const trades = positionManager.getActiveTrades()
|
const trades = positionManager.getActiveTrades()
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { NextRequest, NextResponse } from 'next/server'
|
|||||||
import { initializeDriftService } from '@/lib/drift/client'
|
import { initializeDriftService } from '@/lib/drift/client'
|
||||||
import { openPosition, placeExitOrders } from '@/lib/drift/orders'
|
import { openPosition, placeExitOrders } from '@/lib/drift/orders'
|
||||||
import { getMergedConfig } 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'
|
import { createTrade } from '@/lib/database/trades'
|
||||||
|
|
||||||
export interface TestTradeRequest {
|
export interface TestTradeRequest {
|
||||||
@@ -184,7 +184,7 @@ export async function POST(request: NextRequest): Promise<NextResponse<TestTrade
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add to position manager
|
// Add to position manager
|
||||||
const positionManager = getPositionManager()
|
const positionManager = await getInitializedPositionManager()
|
||||||
await positionManager.addTrade(activeTrade)
|
await positionManager.addTrade(activeTrade)
|
||||||
console.log('✅ Test trade added to position manager')
|
console.log('✅ Test trade added to position manager')
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { initializeDriftService } from '@/lib/drift/client'
|
|||||||
import { openPosition, placeExitOrders } from '@/lib/drift/orders'
|
import { openPosition, placeExitOrders } from '@/lib/drift/orders'
|
||||||
import { normalizeTradingViewSymbol } from '@/config/trading'
|
import { normalizeTradingViewSymbol } from '@/config/trading'
|
||||||
import { getMergedConfig } 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'
|
import { createTrade } from '@/lib/database/trades'
|
||||||
|
|
||||||
export interface TestTradeRequest {
|
export interface TestTradeRequest {
|
||||||
@@ -183,7 +183,7 @@ export async function POST(request: NextRequest): Promise<NextResponse<TestTrade
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add to position manager for monitoring
|
// Add to position manager for monitoring
|
||||||
const positionManager = getPositionManager()
|
const positionManager = await getInitializedPositionManager()
|
||||||
await positionManager.addTrade(activeTrade)
|
await positionManager.addTrade(activeTrade)
|
||||||
|
|
||||||
console.log('✅ Trade added to position manager for monitoring')
|
console.log('✅ Trade added to position manager for monitoring')
|
||||||
|
|||||||
Reference in New Issue
Block a user