fix(validation): migrate DB config from env to ConfigManager
- Refactor getValidationDatabaseService() to use ConfigManager
- Refactor getTableName() to use ConfigManager.getDatabaseType()
- Replace all process.env.DB_TYPE references with ConfigManager API
- Simplify isSqlServer checks from 'sqlserver||mssql' to 'sqlserver'
- Preserve all business logic and dual-database support
- Typecheck passes successfully
Fixes issue where Cleaner page failed with 'Failed to connect to MySQL'
due to validation-handler.ts not being migrated in commit c13be9e
This commit is contained in:
@@ -12,6 +12,7 @@ import { MySqlService } from '../services/database/mysql'
|
|||||||
import { SqlServerService } from '../services/database/sql-server'
|
import { SqlServerService } from '../services/database/sql-server'
|
||||||
import { MaterialsToBeDeletedDAO } from '../services/database/materials-to-be-deleted-dao'
|
import { MaterialsToBeDeletedDAO } from '../services/database/materials-to-be-deleted-dao'
|
||||||
import { DiscreteMaterialPlanDAO } from '../services/database/discrete-material-plan-dao'
|
import { DiscreteMaterialPlanDAO } from '../services/database/discrete-material-plan-dao'
|
||||||
|
import { ConfigManager } from '../services/config/config-manager'
|
||||||
import { createLogger } from '../services/logger'
|
import { createLogger } from '../services/logger'
|
||||||
import type {
|
import type {
|
||||||
ValidationRequest,
|
ValidationRequest,
|
||||||
@@ -57,29 +58,33 @@ export function clearSharedProductionIds(): void {
|
|||||||
* Get database service for validation operations (MySQL or SQL Server)
|
* Get database service for validation operations (MySQL or SQL Server)
|
||||||
*/
|
*/
|
||||||
async function getValidationDatabaseService(): Promise<MySqlService | SqlServerService> {
|
async function getValidationDatabaseService(): Promise<MySqlService | SqlServerService> {
|
||||||
const dbType = process.env.DB_TYPE?.toLowerCase()
|
const configManager = ConfigManager.getInstance()
|
||||||
|
const config = configManager.getConfig()
|
||||||
|
const dbType = configManager.getDatabaseType()
|
||||||
|
|
||||||
if (dbType === 'sqlserver' || dbType === 'mssql') {
|
if (dbType === 'sqlserver') {
|
||||||
|
const dbConfig = config.database.sqlserver
|
||||||
const sqlServerService = new SqlServerService({
|
const sqlServerService = new SqlServerService({
|
||||||
server: process.env.DB_SERVER || 'localhost',
|
server: dbConfig.server,
|
||||||
port: parseInt(process.env.DB_SQLSERVER_PORT || '1433', 10),
|
port: dbConfig.port,
|
||||||
user: process.env.DB_USERNAME || 'sa',
|
user: dbConfig.username,
|
||||||
password: process.env.DB_PASSWORD || '',
|
password: dbConfig.password,
|
||||||
database: process.env.DB_NAME || '',
|
database: dbConfig.database,
|
||||||
options: {
|
options: {
|
||||||
encrypt: false,
|
encrypt: false,
|
||||||
trustServerCertificate: process.env.DB_TRUST_SERVER_CERTIFICATE === 'yes'
|
trustServerCertificate: dbConfig.trustServerCertificate
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
await sqlServerService.connect()
|
await sqlServerService.connect()
|
||||||
return sqlServerService
|
return sqlServerService
|
||||||
} else {
|
} else {
|
||||||
|
const dbConfig = config.database.mysql
|
||||||
const mysqlService = new MySqlService({
|
const mysqlService = new MySqlService({
|
||||||
host: process.env.DB_MYSQL_HOST || 'localhost',
|
host: dbConfig.host,
|
||||||
port: parseInt(process.env.DB_MYSQL_PORT || '3306', 10),
|
port: dbConfig.port,
|
||||||
user: process.env.DB_USERNAME || 'root',
|
user: dbConfig.username,
|
||||||
password: process.env.DB_PASSWORD || '',
|
password: dbConfig.password,
|
||||||
database: process.env.DB_NAME || ''
|
database: dbConfig.database
|
||||||
})
|
})
|
||||||
await mysqlService.connect()
|
await mysqlService.connect()
|
||||||
return mysqlService
|
return mysqlService
|
||||||
@@ -93,8 +98,10 @@ async function getValidationDatabaseService(): Promise<MySqlService | SqlServerS
|
|||||||
* dbo_MaterialsToBeDeleted -> [dbo].[MaterialsToBeDeleted]
|
* dbo_MaterialsToBeDeleted -> [dbo].[MaterialsToBeDeleted]
|
||||||
*/
|
*/
|
||||||
function getTableName(mysqlTableName: string): string {
|
function getTableName(mysqlTableName: string): string {
|
||||||
const dbType = process.env.DB_TYPE?.toLowerCase()
|
const configManager = ConfigManager.getInstance()
|
||||||
if (dbType === 'sqlserver' || dbType === 'mssql') {
|
const dbType = configManager.getDatabaseType()
|
||||||
|
|
||||||
|
if (dbType === 'sqlserver') {
|
||||||
// Find the FIRST underscore to split schema and table name
|
// Find the FIRST underscore to split schema and table name
|
||||||
// This handles patterns like: schema_tablename
|
// This handles patterns like: schema_tablename
|
||||||
const firstUnderscoreIndex = mysqlTableName.indexOf('_')
|
const firstUnderscoreIndex = mysqlTableName.indexOf('_')
|
||||||
@@ -145,8 +152,9 @@ async function getSourceNumbersFromInputs(
|
|||||||
): Promise<string[]> {
|
): Promise<string[]> {
|
||||||
const productionIds: string[] = []
|
const productionIds: string[] = []
|
||||||
const orderNumbers: string[] = []
|
const orderNumbers: string[] = []
|
||||||
const dbType = process.env.DB_TYPE?.toLowerCase()
|
const configManager = ConfigManager.getInstance()
|
||||||
const isSqlServer = dbType === 'sqlserver' || dbType === 'mssql'
|
const dbType = configManager.getDatabaseType()
|
||||||
|
const isSqlServer = dbType === 'sqlserver'
|
||||||
|
|
||||||
for (const item of inputs) {
|
for (const item of inputs) {
|
||||||
const type = identifyInputType(item)
|
const type = identifyInputType(item)
|
||||||
@@ -255,8 +263,9 @@ export function registerValidationHandlers(): void {
|
|||||||
|
|
||||||
// Connect to database
|
// Connect to database
|
||||||
dbService = await getValidationDatabaseService()
|
dbService = await getValidationDatabaseService()
|
||||||
const dbType = process.env.DB_TYPE?.toLowerCase()
|
const configManager = ConfigManager.getInstance()
|
||||||
const isSqlServer = dbType === 'sqlserver' || dbType === 'mssql'
|
const dbType = configManager.getDatabaseType()
|
||||||
|
const isSqlServer = dbType === 'sqlserver'
|
||||||
|
|
||||||
let sourceNumbers: string[] | null = null
|
let sourceNumbers: string[] | null = null
|
||||||
|
|
||||||
@@ -534,8 +543,9 @@ export function registerValidationHandlers(): void {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
dbService = await getValidationDatabaseService()
|
dbService = await getValidationDatabaseService()
|
||||||
const dbType = process.env.DB_TYPE?.toLowerCase()
|
const configManager = ConfigManager.getInstance()
|
||||||
const isSqlServer = dbType === 'sqlserver' || dbType === 'mssql'
|
const dbType = configManager.getDatabaseType()
|
||||||
|
const isSqlServer = dbType === 'sqlserver'
|
||||||
|
|
||||||
const dao = new MaterialsToBeDeletedDAO()
|
const dao = new MaterialsToBeDeletedDAO()
|
||||||
const materials = await dao.getMaterialsByManager(managerName)
|
const materials = await dao.getMaterialsByManager(managerName)
|
||||||
@@ -612,8 +622,9 @@ export function registerValidationHandlers(): void {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
dbService = await getValidationDatabaseService()
|
dbService = await getValidationDatabaseService()
|
||||||
const dbType = process.env.DB_TYPE?.toLowerCase()
|
const configManager = ConfigManager.getInstance()
|
||||||
const isSqlServer = dbType === 'sqlserver' || dbType === 'mssql'
|
const dbType = configManager.getDatabaseType()
|
||||||
|
const isSqlServer = dbType === 'sqlserver'
|
||||||
|
|
||||||
const dao = new MaterialsToBeDeletedDAO()
|
const dao = new MaterialsToBeDeletedDAO()
|
||||||
const materials = await dao.getAllRecords()
|
const materials = await dao.getAllRecords()
|
||||||
@@ -745,8 +756,9 @@ export function registerValidationHandlers(): void {
|
|||||||
|
|
||||||
const isAdmin = userInfo.userType === 'Admin'
|
const isAdmin = userInfo.userType === 'Admin'
|
||||||
const username = userInfo.username
|
const username = userInfo.username
|
||||||
const dbType = process.env.DB_TYPE?.toLowerCase()
|
const configManager = ConfigManager.getInstance()
|
||||||
const isSqlServer = dbType === 'sqlserver' || dbType === 'mssql'
|
const dbType = configManager.getDatabaseType()
|
||||||
|
const isSqlServer = dbType === 'sqlserver'
|
||||||
|
|
||||||
log.info(`User: ${username}, isAdmin: ${isAdmin}`)
|
log.info(`User: ${username}, isAdmin: ${isAdmin}`)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user