This commit is contained in:
@@ -0,0 +1,311 @@
|
||||
const { PrismaClient } = require('@prisma/client');
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
async function inspectDatabase() {
|
||||
console.log('\n========================================');
|
||||
console.log('📊 VERİTABANI İNCELEME RAPORU');
|
||||
console.log('========================================\n');
|
||||
|
||||
// 1. Countries
|
||||
console.log('🌍 ÜLKELER (Countries)');
|
||||
console.log('----------------------------------------');
|
||||
const countries = await prisma.country.findMany({ take: 20 });
|
||||
console.log(`Toplam: ${await prisma.country.count()} kayıt`);
|
||||
console.table(countries);
|
||||
|
||||
// 2. Leagues
|
||||
console.log('\n🏆 LİGLER (Leagues)');
|
||||
console.log('----------------------------------------');
|
||||
const leagues = await prisma.league.findMany({
|
||||
take: 20,
|
||||
include: { country: true },
|
||||
});
|
||||
console.log(`Toplam: ${await prisma.league.count()} kayıt`);
|
||||
console.table(
|
||||
leagues.map((l) => ({
|
||||
id: l.id,
|
||||
name: l.name,
|
||||
sport: l.sport,
|
||||
country: l.country?.name || 'N/A',
|
||||
code: l.code,
|
||||
})),
|
||||
);
|
||||
|
||||
// 3. Teams
|
||||
console.log('\n👥 TAKIMLAR (Teams)');
|
||||
console.log('----------------------------------------');
|
||||
const teams = await prisma.team.findMany({ take: 30 });
|
||||
console.log(`Toplam: ${await prisma.team.count()} kayıt`);
|
||||
console.table(teams);
|
||||
|
||||
// 4. Players
|
||||
console.log('\n🏃 OYUNCULAR (Players)');
|
||||
console.log('----------------------------------------');
|
||||
const players = await prisma.player.findMany({ take: 20 });
|
||||
console.log(`Toplam: ${await prisma.player.count()} kayıt`);
|
||||
console.table(players);
|
||||
|
||||
// 5. Matches
|
||||
console.log('\n⚽ MAÇLAR (Matches)');
|
||||
console.log('----------------------------------------');
|
||||
const matchCount = await prisma.match.count();
|
||||
console.log(`Toplam: ${matchCount} kayıt`);
|
||||
|
||||
const matches = await prisma.match.findMany({
|
||||
take: 15,
|
||||
orderBy: { mstUtc: 'desc' },
|
||||
include: {
|
||||
homeTeam: true,
|
||||
awayTeam: true,
|
||||
league: true,
|
||||
},
|
||||
});
|
||||
console.table(
|
||||
matches.map((m) => ({
|
||||
id: m.id,
|
||||
homeTeam: m.homeTeam?.name || 'N/A',
|
||||
awayTeam: m.awayTeam?.name || 'N/A',
|
||||
score: `${m.scoreHome}-${m.scoreAway}`,
|
||||
status: m.status,
|
||||
state: m.state,
|
||||
sport: m.sport,
|
||||
iddaaCode: m.iddaaCode,
|
||||
mstUtc: new Date(Number(m.mstUtc)).toISOString(),
|
||||
})),
|
||||
);
|
||||
|
||||
// 6. Live Matches
|
||||
console.log('\n🔴 CANLI MAÇLAR (Live Matches)');
|
||||
console.log('----------------------------------------');
|
||||
const liveMatchCount = await prisma.liveMatch.count();
|
||||
console.log(`Toplam: ${liveMatchCount} kayıt`);
|
||||
|
||||
const liveMatches = await prisma.liveMatch.findMany({
|
||||
take: 10,
|
||||
include: {
|
||||
homeTeam: true,
|
||||
awayTeam: true,
|
||||
league: true,
|
||||
},
|
||||
});
|
||||
console.table(
|
||||
liveMatches.map((m) => ({
|
||||
id: m.id,
|
||||
homeTeam: m.homeTeam?.name || 'N/A',
|
||||
awayTeam: m.awayTeam?.name || 'N/A',
|
||||
score: `${m.scoreHome}-${m.scoreAway}`,
|
||||
state: m.state,
|
||||
status: m.status,
|
||||
})),
|
||||
);
|
||||
|
||||
// 7. Match AI Features
|
||||
console.log('\n🤖 MAÇ AI ÖZELLİKLERİ (MatchAiFeatures)');
|
||||
console.log('----------------------------------------');
|
||||
const aiFeaturesCount = await prisma.matchAiFeature.count();
|
||||
console.log(`Toplam: ${aiFeaturesCount} kayıt`);
|
||||
|
||||
const aiFeatures = await prisma.matchAiFeature.findMany({ take: 10 });
|
||||
console.table(aiFeatures);
|
||||
|
||||
// 8. Odd Categories
|
||||
console.log('\n📊 ORAN KATEGORİLERİ (OddCategories)');
|
||||
console.log('----------------------------------------');
|
||||
const oddCategoriesCount = await prisma.oddCategory.count();
|
||||
console.log(`Toplam: ${oddCategoriesCount} kayıt`);
|
||||
|
||||
const oddCategories = await prisma.oddCategory.findMany({
|
||||
take: 10,
|
||||
include: { match: true },
|
||||
});
|
||||
console.table(
|
||||
oddCategories.map((oc) => ({
|
||||
id: oc.dbId,
|
||||
matchId: oc.matchId,
|
||||
name: oc.name,
|
||||
})),
|
||||
);
|
||||
|
||||
// 9. Odd Selections
|
||||
console.log('\n🎯 ORAN SEÇENEKLERİ (OddSelections)');
|
||||
console.log('----------------------------------------');
|
||||
const oddSelectionsCount = await prisma.oddSelection.count();
|
||||
console.log(`Toplam: ${oddSelectionsCount} kayıt`);
|
||||
|
||||
const oddSelections = await prisma.oddSelection.findMany({ take: 15 });
|
||||
console.table(oddSelections);
|
||||
|
||||
// 10. Predictions
|
||||
console.log('\n🔮 TAHMİNLER (Predictions)');
|
||||
console.log('----------------------------------------');
|
||||
const predictionsCount = await prisma.prediction.count();
|
||||
console.log(`Toplam: ${predictionsCount} kayıt`);
|
||||
|
||||
const predictions = await prisma.prediction.findMany({
|
||||
take: 5,
|
||||
include: { match: true },
|
||||
});
|
||||
predictions.forEach((p, i) => {
|
||||
console.log(`\nPrediction ${i + 1}:`);
|
||||
console.log(` Match: ${p.match?.matchName || p.matchId}`);
|
||||
console.log(
|
||||
` JSON:`,
|
||||
JSON.stringify(p.predictionJson, null, 2).substring(0, 500) + '...',
|
||||
);
|
||||
});
|
||||
|
||||
// 11. AI Predictions Log
|
||||
console.log('\n📝 AI TAHMİN LOGARI (AiPredictionsLog)');
|
||||
console.log('----------------------------------------');
|
||||
const aiLogCount = await prisma.aiPredictionsLog.count();
|
||||
console.log(`Toplam: ${aiLogCount} kayıt`);
|
||||
|
||||
const aiLogs = await prisma.aiPredictionsLog.findMany({
|
||||
take: 10,
|
||||
orderBy: { createdAt: 'desc' },
|
||||
});
|
||||
console.table(
|
||||
aiLogs.map((log) => ({
|
||||
id: log.id,
|
||||
matchId: log.matchId,
|
||||
modelVersion: log.modelVersion,
|
||||
confidence: log.confidenceScore,
|
||||
isResolved: log.isResolved,
|
||||
isCorrect: log.isCorrect,
|
||||
createdAt: log.createdAt,
|
||||
})),
|
||||
);
|
||||
|
||||
// 12. Users
|
||||
console.log('\n👤 KULLANICILAR (Users)');
|
||||
console.log('----------------------------------------');
|
||||
const usersCount = await prisma.user.count();
|
||||
console.log(`Toplam: ${usersCount} kayıt`);
|
||||
|
||||
const users = await prisma.user.findMany({
|
||||
select: {
|
||||
id: true,
|
||||
email: true,
|
||||
firstName: true,
|
||||
lastName: true,
|
||||
role: true,
|
||||
subscriptionStatus: true,
|
||||
isActive: true,
|
||||
createdAt: true,
|
||||
},
|
||||
});
|
||||
console.table(users);
|
||||
|
||||
// 13. User Coupons
|
||||
console.log('\n🎫 KULLANICI KUPONLARI (UserCoupons)');
|
||||
console.log('----------------------------------------');
|
||||
const couponsCount = await prisma.userCoupon.count();
|
||||
console.log(`Toplam: ${couponsCount} kayıt`);
|
||||
|
||||
const coupons = await prisma.userCoupon.findMany({
|
||||
take: 10,
|
||||
include: { user: true },
|
||||
});
|
||||
console.table(
|
||||
coupons.map((c) => ({
|
||||
id: c.id,
|
||||
user: c.user.email,
|
||||
strategy: c.strategy,
|
||||
totalOdds: c.totalOdds,
|
||||
status: c.status,
|
||||
isPublic: c.isPublic,
|
||||
})),
|
||||
);
|
||||
|
||||
// 14. Match Team Stats
|
||||
console.log('\n📈 MAÇ TAKIM İSTATİSTİKLERİ (MatchTeamStats)');
|
||||
console.log('----------------------------------------');
|
||||
const teamStatsCount = await prisma.matchTeamStats.count();
|
||||
console.log(`Toplam: ${teamStatsCount} kayıt`);
|
||||
|
||||
const teamStats = await prisma.matchTeamStats.findMany({ take: 5 });
|
||||
console.table(teamStats);
|
||||
|
||||
// 15. Match Player Stats
|
||||
console.log('\n🏀 MAÇ OYUNCU İSTATİSTİKLERİ (MatchPlayerStats)');
|
||||
console.log('----------------------------------------');
|
||||
const playerStatsCount = await prisma.matchPlayerStats.count();
|
||||
console.log(`Toplam: ${playerStatsCount} kayıt`);
|
||||
|
||||
const playerStats = await prisma.matchPlayerStats.findMany({ take: 5 });
|
||||
console.table(playerStats);
|
||||
|
||||
// 16. Match Player Events
|
||||
console.log('\n⚡ MAÇ OLAYLARI (MatchPlayerEvents)');
|
||||
console.log('----------------------------------------');
|
||||
const eventsCount = await prisma.matchPlayerEvents.count();
|
||||
console.log(`Toplam: ${eventsCount} kayıt`);
|
||||
|
||||
const events = await prisma.matchPlayerEvents.findMany({ take: 10 });
|
||||
console.table(events);
|
||||
|
||||
// 17. Official Roles
|
||||
console.log('\n👔 HAKEM ROLLERİ (OfficialRoles)');
|
||||
console.log('----------------------------------------');
|
||||
const officialRoles = await prisma.officialRole.findMany();
|
||||
console.log(`Toplam: ${officialRoles.length} kayıt`);
|
||||
console.table(officialRoles);
|
||||
|
||||
// 18. Match Officials
|
||||
console.log('\n🚨 MAÇ HAKEMLERİ (MatchOfficials)');
|
||||
console.log('----------------------------------------');
|
||||
const officialsCount = await prisma.matchOfficial.count();
|
||||
console.log(`Toplam: ${officialsCount} kayıt`);
|
||||
|
||||
const officials = await prisma.matchOfficial.findMany({ take: 10 });
|
||||
console.table(officials);
|
||||
|
||||
// 19. App Settings
|
||||
console.log('\n⚙️ UYGULAMA AYARLARI (AppSettings)');
|
||||
console.log('----------------------------------------');
|
||||
const settings = await prisma.appSetting.findMany();
|
||||
console.log(`Toplam: ${settings.length} kayıt`);
|
||||
console.table(settings);
|
||||
|
||||
// 20. Translations
|
||||
console.log('\n🌐 ÇEVRİLER (Translations)');
|
||||
console.log('----------------------------------------');
|
||||
const translationsCount = await prisma.translation.count();
|
||||
console.log(`Toplam: ${translationsCount} kayıt`);
|
||||
|
||||
const translations = await prisma.translation.findMany({ take: 10 });
|
||||
console.table(translations);
|
||||
|
||||
// Summary
|
||||
console.log('\n========================================');
|
||||
console.log('📊 ÖZET');
|
||||
console.log('========================================');
|
||||
console.log(`Ülkeler: ${await prisma.country.count()}`);
|
||||
console.log(`Ligler: ${await prisma.league.count()}`);
|
||||
console.log(`Takımlar: ${await prisma.team.count()}`);
|
||||
console.log(`Oyuncular: ${await prisma.player.count()}`);
|
||||
console.log(`Maçlar: ${await prisma.match.count()}`);
|
||||
console.log(`Canlı Maçlar: ${await prisma.liveMatch.count()}`);
|
||||
console.log(`AI Özellikleri: ${await prisma.matchAiFeature.count()}`);
|
||||
console.log(`Oran Kategorileri: ${await prisma.oddCategory.count()}`);
|
||||
console.log(`Oran Seçenekleri: ${await prisma.oddSelection.count()}`);
|
||||
console.log(`Tahminler: ${await prisma.prediction.count()}`);
|
||||
console.log(`AI Log: ${await prisma.aiPredictionsLog.count()}`);
|
||||
console.log(`Kullanıcılar: ${await prisma.user.count()}`);
|
||||
console.log(`Kuponlar: ${await prisma.userCoupon.count()}`);
|
||||
console.log(`Takım İstatistikleri: ${await prisma.matchTeamStats.count()}`);
|
||||
console.log(
|
||||
`Oyuncu İstatistikleri: ${await prisma.matchPlayerStats.count()}`,
|
||||
);
|
||||
console.log(`Olaylar: ${await prisma.matchPlayerEvents.count()}`);
|
||||
console.log(`Hakemler: ${await prisma.matchOfficial.count()}`);
|
||||
console.log(`Çeviriler: ${await prisma.translation.count()}`);
|
||||
console.log('========================================\n');
|
||||
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
|
||||
inspectDatabase().catch((e) => {
|
||||
console.error('Hata:', e);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user