Initial commit
This commit is contained in:
51
commands/fix_dates.js
Normal file
51
commands/fix_dates.js
Normal file
@@ -0,0 +1,51 @@
|
||||
import { BaseCommand } from '@adonisjs/core/ace';
|
||||
export default class FixDates extends BaseCommand {
|
||||
static commandName = 'fix:dates';
|
||||
static description = 'Fix invalid ISO dates in SQLite database';
|
||||
static options = {
|
||||
startApp: true,
|
||||
};
|
||||
async run() {
|
||||
const { default: db } = await import('@adonisjs/lucid/services/db');
|
||||
const { DateTime } = await import('luxon');
|
||||
const tables = [
|
||||
'projects', 'categories', 'tags', 'trainings',
|
||||
'experiences', 'music', 'information', 'images', 'users'
|
||||
];
|
||||
this.logger.info('Starting to fix dates in the database...');
|
||||
let totalFixed = 0;
|
||||
for (const table of tables) {
|
||||
try {
|
||||
const rows = await db.from(table).select('*');
|
||||
let tableFixed = 0;
|
||||
for (const row of rows) {
|
||||
const updates = {};
|
||||
for (const [key, value] of Object.entries(row)) {
|
||||
if (typeof value === 'string' && value.includes('T')) {
|
||||
const parsed = DateTime.fromISO(value);
|
||||
if (parsed.isValid) {
|
||||
updates[key] = parsed.toFormat('yyyy-MM-dd HH:mm:ss');
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Object.keys(updates).length > 0) {
|
||||
await db.from(table).where('id', row.id).update(updates);
|
||||
tableFixed++;
|
||||
totalFixed++;
|
||||
}
|
||||
}
|
||||
if (tableFixed > 0) {
|
||||
this.logger.success(`Fixed ${tableFixed} rows in table "${table}"`);
|
||||
}
|
||||
else {
|
||||
this.logger.info(`No invalid dates found in table "${table}"`);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
this.logger.warning(`Failed to process table "${table}": ${error.message}`);
|
||||
}
|
||||
}
|
||||
this.logger.success(`Date fixing complete! Total rows fixed: ${totalFixed}`);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=fix_dates.js.map
|
||||
Reference in New Issue
Block a user