mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 00:10:25 +08:00 
			
		
		
		
	!61 fix: 1、pgsql驱动换成高斯db驱动 2、sql格式化支持传数据库类型
Merge pull request !61 from zongyangleo/dev_1127
This commit is contained in:
		@@ -1,10 +1,12 @@
 | 
				
			|||||||
import { h, render, VNode } from 'vue';
 | 
					import { h, render, VNode } from 'vue';
 | 
				
			||||||
import SqlExecDialog from './SqlExecDialog.vue';
 | 
					import SqlExecDialog from './SqlExecDialog.vue';
 | 
				
			||||||
 | 
					import {SqlLanguage} from 'sql-formatter/lib/src/sqlFormatter'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type SqlExecProps = {
 | 
					export type SqlExecProps = {
 | 
				
			||||||
    sql: string;
 | 
					    sql: string;
 | 
				
			||||||
    dbId: number;
 | 
					    dbId: number;
 | 
				
			||||||
    db: string;
 | 
					    db: string;
 | 
				
			||||||
 | 
					    dbType?: SqlLanguage;
 | 
				
			||||||
    runSuccessCallback?: Function;
 | 
					    runSuccessCallback?: Function;
 | 
				
			||||||
    cancelCallback?: Function;
 | 
					    cancelCallback?: Function;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -113,7 +113,8 @@ const cancel = () => {
 | 
				
			|||||||
const open = (props: SqlExecProps) => {
 | 
					const open = (props: SqlExecProps) => {
 | 
				
			||||||
    runSuccessCallback = props.runSuccessCallback;
 | 
					    runSuccessCallback = props.runSuccessCallback;
 | 
				
			||||||
    cancelCallback = props.cancelCallback;
 | 
					    cancelCallback = props.cancelCallback;
 | 
				
			||||||
    state.sqlValue = sqlFormatter(props.sql);
 | 
					    props.dbType = props.dbType || 'mysql';
 | 
				
			||||||
 | 
					    state.sqlValue = sqlFormatter(props.sql, { language: props.dbType });
 | 
				
			||||||
    state.dbId = props.dbId;
 | 
					    state.dbId = props.dbId;
 | 
				
			||||||
    state.db = props.db;
 | 
					    state.db = props.db;
 | 
				
			||||||
    state.dialogVisible = true;
 | 
					    state.dialogVisible = true;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -135,6 +135,7 @@ import { reactive, ref, toRefs, watch } from 'vue';
 | 
				
			|||||||
import { ElMessage } from 'element-plus';
 | 
					import { ElMessage } from 'element-plus';
 | 
				
			||||||
import SqlExecBox from '../sqleditor/SqlExecBox';
 | 
					import SqlExecBox from '../sqleditor/SqlExecBox';
 | 
				
			||||||
import { getDbDialect, DbType } from '../../dialect/index';
 | 
					import { getDbDialect, DbType } from '../../dialect/index';
 | 
				
			||||||
 | 
					import { SqlLanguage } from 'sql-formatter/lib/src/sqlFormatter';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const props = defineProps({
 | 
					const props = defineProps({
 | 
				
			||||||
    visible: {
 | 
					    visible: {
 | 
				
			||||||
@@ -421,10 +422,20 @@ const submit = async () => {
 | 
				
			|||||||
        ElMessage.warning('没有更改');
 | 
					        ElMessage.warning('没有更改');
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    let dbType: SqlLanguage = '';
 | 
				
			||||||
 | 
					    switch (props.dbType) {
 | 
				
			||||||
 | 
					        case DbType.mysql:
 | 
				
			||||||
 | 
					            dbType = DbType.mysql;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case DbType.postgresql:
 | 
				
			||||||
 | 
					            dbType = 'postgresql';
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    SqlExecBox({
 | 
					    SqlExecBox({
 | 
				
			||||||
        sql: sql,
 | 
					        sql: sql,
 | 
				
			||||||
        dbId: props.dbId as any,
 | 
					        dbId: props.dbId as any,
 | 
				
			||||||
        db: props.db as any,
 | 
					        db: props.db as any,
 | 
				
			||||||
 | 
					        dbType,
 | 
				
			||||||
        runSuccessCallback: () => {
 | 
					        runSuccessCallback: () => {
 | 
				
			||||||
            emit('submit-sql', { tableName: state.tableData.tableName });
 | 
					            emit('submit-sql', { tableName: state.tableData.tableName });
 | 
				
			||||||
            // cancel();
 | 
					            // cancel();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -125,6 +125,10 @@ class PostgresqlDialect implements DbDialect {
 | 
				
			|||||||
                    marks = true;
 | 
					                    marks = true;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            // 哪些函数不需要加引号
 | 
				
			||||||
 | 
					            if (this.matchType(cl.value, ['nextval'])) {
 | 
				
			||||||
 | 
					                marks = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            return ` DEFAULT ${marks ? "'" : ''}${cl.value}${marks ? "'" : ''}`;
 | 
					            return ` DEFAULT ${marks ? "'" : ''}${cl.value}${marks ? "'" : ''}`;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return '';
 | 
					        return '';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ module mayfly-go
 | 
				
			|||||||
go 1.21
 | 
					go 1.21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require (
 | 
					require (
 | 
				
			||||||
 | 
						gitee.com/opengauss/openGauss-connector-go-pq v1.0.4
 | 
				
			||||||
	github.com/buger/jsonparser v1.1.1
 | 
						github.com/buger/jsonparser v1.1.1
 | 
				
			||||||
	github.com/gin-gonic/gin v1.9.1
 | 
						github.com/gin-gonic/gin v1.9.1
 | 
				
			||||||
	github.com/glebarez/sqlite v1.10.0
 | 
						github.com/glebarez/sqlite v1.10.0
 | 
				
			||||||
@@ -15,7 +16,6 @@ require (
 | 
				
			|||||||
	github.com/golang-jwt/jwt/v5 v5.1.0
 | 
						github.com/golang-jwt/jwt/v5 v5.1.0
 | 
				
			||||||
	github.com/gorilla/websocket v1.5.1
 | 
						github.com/gorilla/websocket v1.5.1
 | 
				
			||||||
	github.com/kanzihuang/vitess/go/vt/sqlparser v0.0.0-20231018071450-ac8d9f0167e9
 | 
						github.com/kanzihuang/vitess/go/vt/sqlparser v0.0.0-20231018071450-ac8d9f0167e9
 | 
				
			||||||
	github.com/lib/pq v1.10.9
 | 
					 | 
				
			||||||
	github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20230712084735-068dc2aee82d
 | 
						github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20230712084735-068dc2aee82d
 | 
				
			||||||
	github.com/mojocn/base64Captcha v1.3.5 // 验证码
 | 
						github.com/mojocn/base64Captcha v1.3.5 // 验证码
 | 
				
			||||||
	github.com/pkg/errors v0.9.1
 | 
						github.com/pkg/errors v0.9.1
 | 
				
			||||||
@@ -68,6 +68,7 @@ require (
 | 
				
			|||||||
	github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
						github.com/pmezard/go-difflib v1.0.0 // indirect
 | 
				
			||||||
	github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
 | 
						github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
 | 
				
			||||||
	github.com/spf13/pflag v1.0.5 // indirect
 | 
						github.com/spf13/pflag v1.0.5 // indirect
 | 
				
			||||||
 | 
						github.com/tjfoc/gmsm v1.4.1 // indirect
 | 
				
			||||||
	github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 | 
						github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
 | 
				
			||||||
	github.com/ugorji/go/codec v1.2.11 // indirect
 | 
						github.com/ugorji/go/codec v1.2.11 // indirect
 | 
				
			||||||
	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 | 
						github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 | 
				
			||||||
@@ -81,6 +82,7 @@ require (
 | 
				
			|||||||
	golang.org/x/sync v0.1.0 // indirect
 | 
						golang.org/x/sync v0.1.0 // indirect
 | 
				
			||||||
	golang.org/x/sys v0.14.0 // indirect
 | 
						golang.org/x/sys v0.14.0 // indirect
 | 
				
			||||||
	golang.org/x/text v0.14.0 // indirect
 | 
						golang.org/x/text v0.14.0 // indirect
 | 
				
			||||||
 | 
						golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
 | 
				
			||||||
	google.golang.org/appengine v1.6.7 // indirect
 | 
						google.golang.org/appengine v1.6.7 // indirect
 | 
				
			||||||
	google.golang.org/genproto v0.0.0-20230131230820-1c016267d619 // indirect
 | 
						google.golang.org/genproto v0.0.0-20230131230820-1c016267d619 // indirect
 | 
				
			||||||
	google.golang.org/grpc v1.52.3 // indirect
 | 
						google.golang.org/grpc v1.52.3 // indirect
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,8 +4,8 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pq "gitee.com/opengauss/openGauss-connector-go-pq"
 | 
				
			||||||
	"github.com/kanzihuang/vitess/go/vt/sqlparser"
 | 
						"github.com/kanzihuang/vitess/go/vt/sqlparser"
 | 
				
			||||||
	"github.com/lib/pq"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type DbType string
 | 
					type DbType string
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,11 +12,11 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/lib/pq"
 | 
						pq "gitee.com/opengauss/openGauss-connector-go-pq"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getPgsqlDB(d *DbInfo) (*sql.DB, error) {
 | 
					func getPgsqlDB(d *DbInfo) (*sql.DB, error) {
 | 
				
			||||||
	driverName := string(d.Type)
 | 
						driverName := "opengauss"
 | 
				
			||||||
	// SSH Conect
 | 
						// SSH Conect
 | 
				
			||||||
	if d.SshTunnelMachineId > 0 {
 | 
						if d.SshTunnelMachineId > 0 {
 | 
				
			||||||
		// 如果使用了隧道,则使用`postgres:ssh:隧道机器id`注册名
 | 
							// 如果使用了隧道,则使用`postgres:ssh:隧道机器id`注册名
 | 
				
			||||||
@@ -41,7 +41,7 @@ func getPgsqlDB(d *DbInfo) (*sql.DB, error) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s %s sslmode=disable", d.Host, d.Port, d.Username, d.Password, dbParam)
 | 
						dsn := fmt.Sprintf("host=%s port=%d user=%s password='%s' %s sslmode=disable", d.Host, d.Port, d.Username, d.Password, dbParam)
 | 
				
			||||||
	// 存在额外指定参数,则拼接该连接参数
 | 
						// 存在额外指定参数,则拼接该连接参数
 | 
				
			||||||
	if d.Params != "" {
 | 
						if d.Params != "" {
 | 
				
			||||||
		// 存在指定的db,则需要将dbInstance配置中的parmas排除掉dbname和search_path
 | 
							// 存在指定的db,则需要将dbInstance配置中的parmas排除掉dbname和search_path
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user