-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiagnostic_script.php
More file actions
executable file
·125 lines (112 loc) · 4.5 KB
/
Copy pathdiagnostic_script.php
File metadata and controls
executable file
·125 lines (112 loc) · 4.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#!/usr/bin/env php
<?php
/**
* Diagnostic Script for Product Database Analysis
* Run this script to diagnose the 607 vs 544 item discrepancy
*
* Usage: php diagnostic_script.php
*/
require_once __DIR__ . '/src/config/Database.php';
use FAS\Config\Database;
try {
$db = Database::getInstance()->getConnection();
echo "=== Product Database Diagnostic Report ===\n";
echo "Generated: " . date('Y-m-d H:i:s') . "\n\n";
// Query 1: Total active products
echo "1. TOTAL ACTIVE PRODUCTS:\n";
$stmt = $db->query("SELECT COUNT(*) as total FROM products WHERE is_active = 1");
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo " Total: " . $result['total'] . "\n\n";
// Query 2: Products with NULL ebay_item_id
echo "2. PRODUCTS WITH NULL ebay_item_id:\n";
$stmt = $db->query("SELECT COUNT(*) as total FROM products WHERE ebay_item_id IS NULL AND is_active = 1");
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo " Count: " . $result['total'] . "\n\n";
// Query 3: Distinct eBay item IDs
echo "3. DISTINCT EBAY ITEM IDs:\n";
$stmt = $db->query("SELECT COUNT(DISTINCT ebay_item_id) as total FROM products WHERE ebay_item_id IS NOT NULL AND is_active = 1");
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo " Count: " . $result['total'] . "\n\n";
// Query 4: Check for duplicates
echo "4. DUPLICATE ebay_item_id VALUES:\n";
$stmt = $db->query("
SELECT ebay_item_id, COUNT(*) as count
FROM products
WHERE is_active = 1 AND ebay_item_id IS NOT NULL
GROUP BY ebay_item_id
HAVING count > 1
LIMIT 10
");
$duplicates = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (empty($duplicates)) {
echo " No duplicates found.\n\n";
} else {
echo " Found " . count($duplicates) . " duplicate ebay_item_ids (showing first 10):\n";
foreach ($duplicates as $dup) {
echo " - eBay ID: " . $dup['ebay_item_id'] . " (appears " . $dup['count'] . " times)\n";
}
echo "\n";
}
// Query 5: Products by source
echo "5. PRODUCTS BY SOURCE:\n";
$stmt = $db->query("
SELECT source, COUNT(*) as count
FROM products
WHERE is_active = 1
GROUP BY source
");
$sources = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($sources as $src) {
echo " - " . ($src['source'] ?? 'NULL') . ": " . $src['count'] . "\n";
}
echo "\n";
// Query 6: Check table schema
echo "6. TABLE SCHEMA (checking UNIQUE constraint):\n";
$stmt = $db->query("SELECT sql FROM sqlite_master WHERE type='table' AND name='products'");
$schema = $stmt->fetch(PDO::FETCH_ASSOC);
if ($schema) {
$sql = $schema['sql'];
if (strpos($sql, 'UNIQUE') !== false) {
echo " ✓ UNIQUE constraint found in schema\n";
// Extract the line with ebay_item_id
$lines = explode("\n", $sql);
foreach ($lines as $line) {
if (strpos($line, 'ebay_item_id') !== false) {
echo " " . trim($line) . "\n";
}
}
} else {
echo " ✗ WARNING: UNIQUE constraint NOT found in schema!\n";
}
}
echo "\n";
// Query 7: Sample of products with same ebay_item_id (if duplicates exist)
if (!empty($duplicates)) {
echo "7. SAMPLE DUPLICATE DETAILS:\n";
$firstDup = $duplicates[0]['ebay_item_id'];
$stmt = $db->prepare("
SELECT id, ebay_item_id, name, sku, category, created_at
FROM products
WHERE ebay_item_id = ? AND is_active = 1
");
$stmt->execute([$firstDup]);
$dupDetails = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($dupDetails as $item) {
echo " ID: " . $item['id'] . "\n";
echo " eBay ID: " . $item['ebay_item_id'] . "\n";
echo " Name: " . $item['name'] . "\n";
echo " SKU: " . ($item['sku'] ?? 'NULL') . "\n";
echo " Category: " . ($item['category'] ?? 'NULL') . "\n";
echo " Created: " . $item['created_at'] . "\n";
echo " ---\n";
}
}
echo "\n=== END OF DIAGNOSTIC REPORT ===\n";
echo "\nSUMMARY:\n";
echo "- Expected unique eBay items: 544\n";
echo "- Actual total products: " . $result['total'] . "\n";
echo "- Discrepancy: " . ($result['total'] - 544) . " extra items\n";
} catch (Exception $e) {
echo "ERROR: " . $e->getMessage() . "\n";
exit(1);
}