Files
mayfly-go/mayfly_go_web/src/views/ops/db/dialect/index.ts

95 lines
2.3 KiB
TypeScript
Raw Normal View History

2023-11-26 21:21:35 +08:00
import { MysqlDialect } from './mysql_dialect';
import { PostgresqlDialect } from './postgres_dialect';
2023-12-06 14:50:02 +08:00
import { DMDialect } from '@/views/ops/db/dialect/dm_dialect';
import { SqlLanguage } from 'sql-formatter/lib/src/sqlFormatter';
2023-11-26 21:21:35 +08:00
export interface sqlColumnType {
udtName: string;
dataType: string;
desc: string;
space: string;
range?: string;
}
export const DbType = {
mysql: 'mysql',
postgresql: 'postgres',
2023-12-06 14:50:02 +08:00
dm: 'dm', // 达梦
2023-11-26 21:21:35 +08:00
};
export interface DbDialect {
2023-11-27 17:40:47 +08:00
/**
* sql对应的dialect名称
*/
2023-12-06 14:50:02 +08:00
getFormatDialect(): SqlLanguage;
2023-11-27 17:40:47 +08:00
2023-11-26 21:21:35 +08:00
/**
*
*/
getIcon(): string;
/**
* sql
* @param table
* @param condition
* @param orderBy
* @param pageNum
* @param limit
*/
getDefaultSelectSql(table: string, condition: string, orderBy: string, pageNum: number, limit: number): string;
/**
* 使
* @param name
*/
wrapName(name: string): string;
/**
*
* */
getColumnTypes(): sqlColumnType[];
/**
* sql
* @param tableData
*/
getCreateTableSql(tableData: any): string;
/**
* sql
* @param tableData
*/
getCreateIndexSql(tableData: any): string;
/**
* sql
* @param tableName
* @param changeData
*/
getModifyColumnSql(tableName: string, changeData: { del: any[]; add: any[]; upd: any[] }): string;
/**
* sql
* @param tableName
* @param changeData
*/
getModifyIndexSql(tableName: string, changeData: { del: any[]; add: any[]; upd: any[] }): string;
}
let mysqlDialect = new MysqlDialect();
let postgresDialect = new PostgresqlDialect();
2023-12-06 14:50:02 +08:00
let dmDialect = new DMDialect();
2023-11-26 21:21:35 +08:00
export const getDbDialect = (dbType: string | undefined): DbDialect => {
if (dbType === DbType.mysql) {
return mysqlDialect;
}
if (dbType === DbType.postgresql) {
return postgresDialect;
}
2023-12-06 14:50:02 +08:00
if (dbType === DbType.dm) {
return dmDialect;
}
2023-11-26 21:21:35 +08:00
throw new Error('不支持的数据库');
};