fix: remove unused imports and fix logger test isolation

- Remove unused imports (run, trackDuration, PerformanceTracker,
  ConfigManager, disconnectDb) flagged by ESLint
- Remove unused isSlow variable in performance-monitor catch block
- Add eslint-disable for require() in Playwright JS script
- Fix logger-performance test flakiness by using vi.resetModules()
  with dynamic imports to prevent cached logger references across
  test files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Misaka
2026-04-05 12:15:18 +08:00
parent e54d94fce2
commit e2669af870
14 changed files with 157 additions and 66 deletions

View File

@@ -22,9 +22,12 @@ function getDatabaseType(): 'mysql' | 'mssql' | 'postgres' {
const configManager = ConfigManager.getInstance()
const dbType = configManager.getDatabaseType()
switch (dbType) {
case 'sqlserver': return 'mssql'
case 'postgresql': return 'postgres'
default: return 'mysql'
case 'sqlserver':
return 'mssql'
case 'postgresql':
return 'postgres'
default:
return 'mysql'
}
}

View File

@@ -10,7 +10,7 @@
import { create, type IDatabaseService } from './index'
import { createDialect, type SqlDialect } from './dialects'
import { createLogger, run, getRequestId, trackDuration } from '../logger'
import { createLogger, getRequestId, trackDuration } from '../logger'
const log = createLogger('DiscreteMaterialPlanDAO')

View File

@@ -11,7 +11,7 @@
import { create, type IDatabaseService } from './index'
import { createDialect, type SqlDialect } from './dialects'
import { createLogger, run, getRequestId, trackDuration } from '../logger'
import { createLogger, getRequestId, trackDuration } from '../logger'
import type {
OperationHistoryRecord,
BatchStats,
@@ -202,7 +202,7 @@ export class ExtractorOperationHistoryDAO {
`
const params = [status, batchId]
const result = await trackDuration(async () => await dbService.query(sqlString, params), {
await trackDuration(async () => await dbService.query(sqlString, params), {
operationName: 'ExtractorOperationHistoryDAO.updateBatchStatus',
context: { tableName, operationType: 'UPDATE', batchId }
})

View File

@@ -10,7 +10,7 @@
import { create, type IDatabaseService } from './index'
import { createDialect, type SqlDialect } from './dialects'
import { createLogger, run, getRequestId, trackDuration } from '../logger'
import { createLogger, getRequestId, trackDuration } from '../logger'
const log = createLogger('MaterialsToBeDeletedDAO')

View File

@@ -7,7 +7,7 @@
import { create, type IDatabaseService } from './index'
import { createDialect, type SqlDialect } from './dialects'
import { createLogger, run, getRequestId, trackDuration } from '../logger'
import { createLogger, getRequestId, trackDuration } from '../logger'
const log = createLogger('MaterialsTypeToBeDeletedDAO')

View File

@@ -18,37 +18,123 @@ export type { PostgreSqlConfig } from '../../types/database.types'
*/
const SQL_KEYWORDS = new Set([
// DML
'SELECT', 'FROM', 'WHERE', 'AND', 'OR', 'NOT', 'IN', 'IS', 'NULL',
'INSERT', 'INTO', 'VALUES', 'UPDATE', 'SET', 'DELETE',
'SELECT',
'FROM',
'WHERE',
'AND',
'OR',
'NOT',
'IN',
'IS',
'NULL',
'INSERT',
'INTO',
'VALUES',
'UPDATE',
'SET',
'DELETE',
// Ordering & limiting
'ORDER', 'BY', 'ASC', 'DESC', 'LIMIT', 'OFFSET',
'FETCH', 'NEXT', 'ROWS', 'ONLY',
'ORDER',
'BY',
'ASC',
'DESC',
'LIMIT',
'OFFSET',
'FETCH',
'NEXT',
'ROWS',
'ONLY',
// Joins
'JOIN', 'LEFT', 'RIGHT', 'INNER', 'OUTER', 'CROSS', 'FULL', 'ON',
'JOIN',
'LEFT',
'RIGHT',
'INNER',
'OUTER',
'CROSS',
'FULL',
'ON',
// Set operations
'UNION', 'ALL', 'INTERSECT', 'EXCEPT',
'UNION',
'ALL',
'INTERSECT',
'EXCEPT',
// Grouping
'GROUP', 'HAVING', 'DISTINCT',
'GROUP',
'HAVING',
'DISTINCT',
// DDL
'CREATE', 'ALTER', 'DROP', 'TABLE', 'INDEX', 'COLUMN',
'ADD', 'MODIFY', 'RENAME', 'TO',
'CREATE',
'ALTER',
'DROP',
'TABLE',
'INDEX',
'COLUMN',
'ADD',
'MODIFY',
'RENAME',
'TO',
// PostgreSQL specific
'CONFLICT', 'DO', 'NOTHING', 'EXCLUDED', 'RETURNING',
'MERGE', 'USING', 'MATCHED', 'WHEN', 'THEN', 'ELSE', 'END',
'TARGET', 'SOURCE',
'CONFLICT',
'DO',
'NOTHING',
'EXCLUDED',
'RETURNING',
'MERGE',
'USING',
'MATCHED',
'WHEN',
'THEN',
'ELSE',
'END',
'TARGET',
'SOURCE',
// Functions
'COUNT', 'SUM', 'AVG', 'MIN', 'MAX', 'EXISTS',
'CURRENT_TIMESTAMP', 'NOW', 'GETDATE',
'COALESCE', 'NULLIF', 'CAST', 'AS',
'COUNT',
'SUM',
'AVG',
'MIN',
'MAX',
'EXISTS',
'CURRENT_TIMESTAMP',
'NOW',
'GETDATE',
'COALESCE',
'NULLIF',
'CAST',
'AS',
// Transaction
'BEGIN', 'COMMIT', 'ROLLBACK', 'SAVEPOINT',
'BEGIN',
'COMMIT',
'ROLLBACK',
'SAVEPOINT',
// Types & values
'TRUE', 'FALSE', 'DEFAULT', 'PRIMARY', 'KEY',
'REFERENCES', 'FOREIGN', 'CONSTRAINT', 'UNIQUE', 'CHECK',
'CASE', 'BETWEEN', 'LIKE', 'ILIKE', 'ANY', 'SOME',
'TRUE',
'FALSE',
'DEFAULT',
'PRIMARY',
'KEY',
'REFERENCES',
'FOREIGN',
'CONSTRAINT',
'UNIQUE',
'CHECK',
'CASE',
'BETWEEN',
'LIKE',
'ILIKE',
'ANY',
'SOME',
// Common
'IF', 'WITH', 'RECURSIVE', 'OVER', 'PARTITION', 'WINDOW',
'ROW', 'FIRST', 'AFTER', 'BEFORE'
'IF',
'WITH',
'RECURSIVE',
'OVER',
'PARTITION',
'WINDOW',
'ROW',
'FIRST',
'AFTER',
'BEFORE'
])
/**