Skip to content

Commit bd42262

Browse files
authored
feat: support execute multiple lines (#38)
Co-authored-by: Rick <[email protected]>
1 parent 539f3ce commit bd42262

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

pkg/data_query.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
9191

9292
var dataResult *server.DataQueryResult
9393
now := time.Now()
94-
if dataResult, err = sqlQuery(ctx, query.Sql, db); err == nil {
94+
if dataResult, err = runMultilineSQL(ctx, query.Sql, db); err == nil {
9595
result.Items = dataResult.Items
9696
result.Meta.Duration = time.Since(now).String()
9797

@@ -101,9 +101,19 @@ func (s *dbserver) Query(ctx context.Context, query *server.DataQuery) (result *
101101
return
102102
}
103103

104-
func sqlQuery(ctx context.Context, sql string, db *gorm.DB) (result *server.DataQueryResult, err error) {
105-
rows, err := db.Raw(sql).Rows()
106-
if err != nil {
104+
func runMultilineSQL(ctx context.Context, multilineSQL string, db *gorm.DB) (result *server.DataQueryResult, err error) {
105+
lines := strings.Split(multilineSQL, ";")
106+
for _, line := range lines {
107+
if result, err = sqlQuery(ctx, line, db); err != nil {
108+
return
109+
}
110+
}
111+
return
112+
}
113+
114+
func sqlQuery(ctx context.Context, sqlText string, db *gorm.DB) (result *server.DataQueryResult, err error) {
115+
var rows *sql.Rows
116+
if rows, err = db.Raw(sqlText).Rows(); err != nil {
107117
return
108118
}
109119
defer func() {
@@ -119,7 +129,7 @@ func sqlQuery(ctx context.Context, sql string, db *gorm.DB) (result *server.Data
119129
}
120130

121131
if rows == nil {
122-
if rows, err = db.ConnPool.QueryContext(ctx, sql); err != nil {
132+
if rows, err = db.ConnPool.QueryContext(ctx, sqlText); err != nil {
123133
return
124134
} else if rows == nil {
125135
fmt.Println("no rows found")

0 commit comments

Comments
 (0)