institutional-trader/backend/scripts/verifyTimeFix.js

71 lines
2.0 KiB
JavaScript

/**
* Verify that time fixes were applied correctly
*/
import { rawQuery } from '../src/db.js';
import dotenv from 'dotenv';
dotenv.config();
async function verify() {
console.log('🔍 Verifying time fixes...\n');
// Check for any remaining single-digit hours
const remaining = await rawQuery(`
SELECT COUNT(*) as total
FROM "OptionsFlow_monthly"
WHERE "CreatedTime" IS NOT NULL
AND (
"CreatedTime"::text ~ '^[1-9]:[0-9]{2}:[0-9]{2}\\s*(AM|PM)$'
OR "CreatedTime"::text ~ '^[1-9]:[0-9]{2}\\s*(AM|PM)$'
);
`);
const remainingCount = remaining[0]?.total || 0;
console.log(`Single-digit hour entries remaining: ${remainingCount}`);
if (remainingCount > 0) {
console.log('⚠️ Some entries still need fixing');
} else {
console.log('✅ All single-digit hours have been fixed!');
}
// Check specific times from error message
const specificCheck = await rawQuery(`
SELECT "CreatedTime", COUNT(*) as cnt
FROM "OptionsFlow_monthly"
WHERE "CreatedDate" = '2025-12-17'
AND (
"CreatedTime" LIKE '%2:30%'
OR "CreatedTime" LIKE '%2:31%'
)
GROUP BY "CreatedTime"
ORDER BY cnt DESC;
`);
console.log('\nTimes matching 2:30 or 2:31 on 2025-12-17:');
if (specificCheck.length === 0) {
console.log(' ✅ None found - all fixed!');
} else {
specificCheck.forEach(r => console.log(` ${r.CreatedTime}: ${r.cnt} occurrences`));
}
// Show sample of properly formatted times
const sample = await rawQuery(`
SELECT "CreatedTime", COUNT(*) as cnt
FROM "OptionsFlow_monthly"
WHERE "CreatedDate" = '2025-12-17'
AND "CreatedTime" IS NOT NULL
AND "CreatedTime"::text ~ '^[0-9]{2}:[0-9]{2}:[0-9]{2}\\s*(AM|PM)$'
GROUP BY "CreatedTime"
ORDER BY cnt DESC
LIMIT 10;
`);
console.log('\n✅ Sample of properly formatted times on 2025-12-17:');
sample.forEach(r => console.log(` ${r.CreatedTime}: ${r.cnt} occurrences`));
}
verify().then(() => process.exit(0)).catch(e => { console.error(e); process.exit(1); });