Skip to content

Commit 98ff025

Browse files
authored
Merge pull request #15 from ColdWaterLW/issue-2054
gather parsed SQLs by file name
2 parents ec9bc09 + 62a95c8 commit 98ff025

File tree

3 files changed

+24
-7
lines changed

3 files changed

+24
-7
lines changed

ast/mapper.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type Mapper struct {
1313
SqlNodes map[string]*SqlNode
1414
QueryNodeIndex map[string]*QueryNode
1515
QueryNodes []*QueryNode
16+
FilePath string
1617
}
1718

1819
func NewMapper() *Mapper {

ast/mappers.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,14 @@ func (s *Mappers) AddMapper(ms ...*Mapper) error {
2323
return nil
2424
}
2525

26-
func (s *Mappers) GetStmts(skipErrorQuery bool) ([]string, error) {
26+
type StmtInfo struct {
27+
FilePath string
28+
SQL string
29+
}
30+
31+
func (s *Mappers) GetStmts(skipErrorQuery bool) ([]StmtInfo, error) {
2732
ctx := NewContext()
28-
stmts := []string{}
33+
stmts := []StmtInfo{}
2934
for _, m := range s.mappers {
3035
for id, node := range m.SqlNodes {
3136
ctx.Sqls[fmt.Sprintf("%v.%v", m.NameSpace, id)] = node
@@ -38,7 +43,12 @@ func (s *Mappers) GetStmts(skipErrorQuery bool) ([]string, error) {
3843
if err != nil {
3944
return nil, fmt.Errorf("get sqls from mapper failed, namespace: %v, err: %v", m.NameSpace, err)
4045
}
41-
stmts = append(stmts, stmt...)
46+
for _, sql := range stmt {
47+
stmts = append(stmts, StmtInfo{
48+
FilePath: m.FilePath,
49+
SQL: sql,
50+
})
51+
}
4252
}
4353
return stmts, nil
4454
}

parser.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,17 @@ func ParseXML(data string) (string, error) {
2828
return stmt, nil
2929
}
3030

31-
// ParseXMLs is a parser for parse all query in several XML files to []string one by one;
31+
type XmlFile struct {
32+
FilePath string
33+
Content string
34+
}
35+
36+
// ParseXMLs is a parser for parse all query in several XML files to []ast.StmtInfo one by one;
3237
// you can set `skipErrorQuery` true to ignore invalid query.
33-
func ParseXMLs(data []string, skipErrorQuery bool) ([]string, error) {
38+
func ParseXMLs(data []XmlFile, skipErrorQuery bool) ([]ast.StmtInfo, error) {
3439
ms := ast.NewMappers()
35-
for i := range data {
36-
r := strings.NewReader(data[i])
40+
for _, data := range data {
41+
r := strings.NewReader(data.Content)
3742
d := xml.NewDecoder(r)
3843
n, err := parse(d)
3944
if err != nil {
@@ -56,6 +61,7 @@ func ParseXMLs(data []string, skipErrorQuery bool) ([]string, error) {
5661
return nil, errors.New("the mapper is not found")
5762
}
5863
}
64+
m.FilePath = data.FilePath
5965
err = ms.AddMapper(m)
6066
if err != nil && !skipErrorQuery {
6167
return nil, fmt.Errorf("add mapper failed: %v", err)

0 commit comments

Comments
 (0)