| 511 | WHERE status = ? AND expires_at < ? |
| 512 | `); |
| 513 | const result = stmt.run(PrizeStatus.EXPIRED, PrizeStatus.PENDING, Date.now()); |
| 514 | return result.changes; |
| 515 | } |
| 516 | |
| 517 | // Enhanced prize distribution |
| 518 | async function distributePrizes(client: TelegramClient, lottery: any, winners: any[]): Promise<void> { |
| 519 | if (!db) return; |
| 520 | |
| 521 | try { |
| 522 | // Use transaction for concurrent safety during prize distribution |
| 523 | const transaction = db.transaction(() => { |
| 524 | for (const winner of winners) { |
| 525 | // Get available prize from warehouse |
| 526 | const prize = getNextAvailablePrize(lottery.prize_warehouse || "default"); |