first (part 3: src directory)
Deploy Iddaai Backend / build-and-deploy (push) Successful in 33s

This commit is contained in:
2026-04-16 15:12:27 +03:00
parent 2f0b85a0c7
commit 182f4aae16
125 changed files with 22552 additions and 0 deletions
+107
View File
@@ -0,0 +1,107 @@
/**
* Live Matches Cleanup Script
*
* Bitmiş maçları live_matches tablosundan siler.
* Kullanım: npx ts-node -r tsconfig-paths/register src/scripts/cleanup-live-matches.ts
*/
import { PrismaClient } from '@prisma/client';
const FINISHED_STATUSES = ['Finished', 'Played', 'FT', 'AET', 'PEN', 'Ended'];
const FINISHED_STATES = ['Finished', 'post', 'FT', 'postGame'];
const LIVE_STATUSES = [
'LIVE',
'1H',
'2H',
'HT',
'1Q',
'2Q',
'3Q',
'4Q',
'Playing',
'Half Time',
];
const LIVE_STATES = ['live', 'firsthalf', 'secondhalf'];
async function cleanupLiveMatches() {
const prisma = new PrismaClient();
try {
console.log('🧹 Live matches temizliği başlıyor...');
const now = Date.now();
const finishedGraceMs = 6 * 60 * 60 * 1000;
const staleGraceMs = 24 * 60 * 60 * 1000;
const finishedBefore = BigInt(now - finishedGraceMs);
const staleBefore = BigInt(now - staleGraceMs);
const totalBefore = await prisma.liveMatch.count();
const outdatedCount = await prisma.liveMatch.count({
where: {
mstUtc: { lt: BigInt(now) },
},
});
const finishedPastCount = await prisma.liveMatch.count({
where: {
mstUtc: { lt: finishedBefore },
OR: [
{ status: { in: FINISHED_STATUSES } },
{ state: { in: FINISHED_STATES } },
],
},
});
console.log('📊 Mevcut durum:');
console.log(` Toplam live_matches: ${totalBefore}`);
console.log(` Geçmiş zamanlı kayıt: ${outdatedCount}`);
console.log(
` Bitmiş ve grace süresini aşmış kayıt: ${finishedPastCount}`,
);
const deleted = await prisma.liveMatch.deleteMany({
where: {
OR: [
{
mstUtc: { lt: finishedBefore },
OR: [
{ status: { in: FINISHED_STATUSES } },
{ state: { in: FINISHED_STATES } },
],
},
{
mstUtc: { lt: staleBefore },
NOT: {
OR: [
{ status: { in: LIVE_STATUSES } },
{ state: { in: LIVE_STATES } },
],
},
},
],
},
});
const totalAfter = await prisma.liveMatch.count();
console.log('\n✅ Temizlik tamamlandı!');
console.log(` Silinen maç: ${deleted.count}`);
console.log(` Kalan maç: ${totalAfter}`);
const states = await prisma.$queryRaw`
SELECT state, COUNT(*)::int as count
FROM live_matches
GROUP BY state
`;
console.log('\n📋 Kalan maçların durumları:');
(states as any).forEach((s: any) => {
console.log(` ${s.state || 'null'}: ${s.count}`);
});
} catch (error) {
console.error('❌ Hata:', error);
} finally {
await prisma.$disconnect();
}
}
void cleanupLiveMatches();