From 0ca17a1807936912ec5b745480bbf2a12d8c6686 Mon Sep 17 00:00:00 2001 From: Misaka Date: Sun, 5 Apr 2026 10:34:03 +0800 Subject: [PATCH] fix(db): correct dialect import paths and extend bip-users-dao type - Fix dialect files to use relative paths instead of @types alias - Add 'postgresql' to BIPUsersDAO dbType union Co-Authored-By: Claude Opus 4.6 --- src/main/services/database/dialects/index.ts | 6 ++--- .../database/dialects/mysql-dialect.ts | 14 +++++------- .../database/dialects/postgresql-dialect.ts | 18 +++++---------- .../database/dialects/sqlserver-dialect.ts | 22 ++++++------------- src/main/services/user/bip-users-dao.ts | 2 +- 5 files changed, 22 insertions(+), 40 deletions(-) diff --git a/src/main/services/database/dialects/index.ts b/src/main/services/database/dialects/index.ts index 7ef3700..299a17d 100644 --- a/src/main/services/database/dialects/index.ts +++ b/src/main/services/database/dialects/index.ts @@ -4,8 +4,8 @@ * Creates the appropriate SqlDialect implementation based on database type. */ -import type { DatabaseType } from '@types/database.types' -import type { SqlDialect } from '@types/sql-dialect.types' +import type { DatabaseType } from '../../../types/database.types' +import type { SqlDialect } from '../../../types/sql-dialect.types' import { MySqlDialect } from './mysql-dialect' import { PostgreSqlDialect } from './postgresql-dialect' @@ -14,7 +14,7 @@ import { SqlServerDialect } from './sqlserver-dialect' export { MySqlDialect } from './mysql-dialect' export { PostgreSqlDialect } from './postgresql-dialect' export { SqlServerDialect } from './sqlserver-dialect' -export type { SqlDialect } from '@types/sql-dialect.types' +export type { SqlDialect } from '../../../types/sql-dialect.types' export function createDialect(type: DatabaseType): SqlDialect { switch (type) { diff --git a/src/main/services/database/dialects/mysql-dialect.ts b/src/main/services/database/dialects/mysql-dialect.ts index 64b3953..cfad1e1 100644 --- a/src/main/services/database/dialects/mysql-dialect.ts +++ b/src/main/services/database/dialects/mysql-dialect.ts @@ -8,7 +8,7 @@ * - LIMIT/OFFSET pagination */ -import type { SqlDialect } from '@types/sql-dialect.types' +import type { SqlDialect } from '../../../types/sql-dialect.types' export class MySqlDialect implements SqlDialect { readonly dbType = 'mysql' as const @@ -41,9 +41,7 @@ export class MySqlDialect implements SqlDialect { const placeholders = allColumns.map(() => '?').join(', ') const nonKeyColumns = allColumns.filter((col) => !keyColumns.includes(col)) - const updateClause = nonKeyColumns - .map((col) => `${col} = VALUES(${col})`) - .join(', ') + const updateClause = nonKeyColumns.map((col) => `${col} = VALUES(${col})`).join(', ') const sql = `INSERT INTO ${table} (${columns}) VALUES (${placeholders}) ON DUPLICATE KEY UPDATE ${updateClause}` @@ -53,12 +51,10 @@ export class MySqlDialect implements SqlDialect { } } - paginate(params: { + paginate(params: { sql: string; limit: number; offset?: number; paramIndex: number }): { sql: string - limit: number - offset?: number - paramIndex: number - }): { sql: string; nextParamIndex: number } { + nextParamIndex: number + } { const { sql, limit, offset, paramIndex } = params return { diff --git a/src/main/services/database/dialects/postgresql-dialect.ts b/src/main/services/database/dialects/postgresql-dialect.ts index d3caa55..02805e5 100644 --- a/src/main/services/database/dialects/postgresql-dialect.ts +++ b/src/main/services/database/dialects/postgresql-dialect.ts @@ -8,7 +8,7 @@ * - LIMIT/OFFSET pagination */ -import type { SqlDialect } from '@types/sql-dialect.types' +import type { SqlDialect } from '../../../types/sql-dialect.types' export class PostgreSqlDialect implements SqlDialect { readonly dbType = 'postgresql' as const @@ -38,16 +38,12 @@ export class PostgreSqlDialect implements SqlDialect { const { table, keyColumns, allColumns, startParamIndex } = params const columns = allColumns.join(', ') - const placeholders = allColumns - .map((_, i) => `$${startParamIndex + i + 1}`) - .join(', ') + const placeholders = allColumns.map((_, i) => `$${startParamIndex + i + 1}`).join(', ') const conflictKeys = keyColumns.map((col) => `"${col}"`).join(', ') const nonKeyColumns = allColumns.filter((col) => !keyColumns.includes(col)) - const updateSet = nonKeyColumns - .map((col) => `"${col}" = EXCLUDED."${col}"`) - .join(', ') + const updateSet = nonKeyColumns.map((col) => `"${col}" = EXCLUDED."${col}"`).join(', ') const sql = [ `INSERT INTO ${table} (${columns}) VALUES (${placeholders})`, @@ -61,12 +57,10 @@ export class PostgreSqlDialect implements SqlDialect { } } - paginate(params: { + paginate(params: { sql: string; limit: number; offset?: number; paramIndex: number }): { sql: string - limit: number - offset?: number - paramIndex: number - }): { sql: string; nextParamIndex: number } { + nextParamIndex: number + } { const { sql, limit, offset, paramIndex } = params return { diff --git a/src/main/services/database/dialects/sqlserver-dialect.ts b/src/main/services/database/dialects/sqlserver-dialect.ts index 070272d..6086420 100644 --- a/src/main/services/database/dialects/sqlserver-dialect.ts +++ b/src/main/services/database/dialects/sqlserver-dialect.ts @@ -8,7 +8,7 @@ * - OFFSET/FETCH pagination */ -import type { SqlDialect } from '@types/sql-dialect.types' +import type { SqlDialect } from '../../../types/sql-dialect.types' export class SqlServerDialect implements SqlDialect { readonly dbType = 'sqlserver' as const @@ -37,19 +37,13 @@ export class SqlServerDialect implements SqlDialect { }): { sql: string; nextParamIndex: number } { const { table, keyColumns, allColumns, startParamIndex } = params - const valueParams = allColumns - .map((_, i) => `@p${startParamIndex + i}`) - .join(', ') + const valueParams = allColumns.map((_, i) => `@p${startParamIndex + i}`).join(', ') const sourceColumns = allColumns.join(', ') - const joinCondition = keyColumns - .map((col) => `target.${col} = source.${col}`) - .join(' AND ') + const joinCondition = keyColumns.map((col) => `target.${col} = source.${col}`).join(' AND ') const nonKeyColumns = allColumns.filter((col) => !keyColumns.includes(col)) - const updateSet = nonKeyColumns - .map((col) => `target.${col} = source.${col}`) - .join(', ') + const updateSet = nonKeyColumns.map((col) => `target.${col} = source.${col}`).join(', ') const insertColumns = allColumns.join(', ') const insertValues = allColumns.map((col) => `source.${col}`).join(', ') @@ -68,12 +62,10 @@ export class SqlServerDialect implements SqlDialect { } } - paginate(params: { + paginate(params: { sql: string; limit: number; offset?: number; paramIndex: number }): { sql: string - limit: number - offset?: number - paramIndex: number - }): { sql: string; nextParamIndex: number } { + nextParamIndex: number + } { const { sql, limit, offset, paramIndex } = params if (offset !== undefined) { diff --git a/src/main/services/user/bip-users-dao.ts b/src/main/services/user/bip-users-dao.ts index fbc59d5..b56b193 100644 --- a/src/main/services/user/bip-users-dao.ts +++ b/src/main/services/user/bip-users-dao.ts @@ -46,7 +46,7 @@ export const BIP_USERS_CONFIG = { export class BIPUsersDAO { private mysqlService: MySqlService | null = null private sqlServerService: SqlServerService | null = null - private dbType: 'mysql' | 'sqlserver' = 'mysql' + private dbType: 'mysql' | 'sqlserver' | 'postgresql' = 'mysql' private configManager: ConfigManager /**