Skip to content

Commit 62a95c8

Browse files
committed
make it easy to extend the struct
1 parent ef33e92 commit 62a95c8

File tree

2 files changed

+15
-74
lines changed

2 files changed

+15
-74
lines changed

ast/mappers.go

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

26-
func (s *Mappers) GetStmts(skipErrorQuery bool) ([]string, error) {
27-
ctx := NewContext()
28-
stmts := []string{}
29-
for _, m := range s.mappers {
30-
for id, node := range m.SqlNodes {
31-
ctx.Sqls[fmt.Sprintf("%v.%v", m.NameSpace, id)] = node
32-
}
33-
}
34-
35-
for _, m := range s.mappers {
36-
ctx.DefaultNamespace = m.NameSpace
37-
stmt, err := m.GetStmts(ctx, skipErrorQuery)
38-
if err != nil {
39-
return nil, fmt.Errorf("get sqls from mapper failed, namespace: %v, err: %v", m.NameSpace, err)
40-
}
41-
stmts = append(stmts, stmt...)
42-
}
43-
return stmts, nil
44-
}
45-
46-
type StmtsInfo struct {
26+
type StmtInfo struct {
4727
FilePath string
48-
SQLs []string
28+
SQL string
4929
}
5030

51-
func (s *Mappers) GetStmtsWithFilePath(skipErrorQuery bool) ([]StmtsInfo, error) {
31+
func (s *Mappers) GetStmts(skipErrorQuery bool) ([]StmtInfo, error) {
5232
ctx := NewContext()
33+
stmts := []StmtInfo{}
5334
for _, m := range s.mappers {
5435
for id, node := range m.SqlNodes {
5536
ctx.Sqls[fmt.Sprintf("%v.%v", m.NameSpace, id)] = node
5637
}
5738
}
5839

59-
var stmts []StmtsInfo
6040
for _, m := range s.mappers {
6141
ctx.DefaultNamespace = m.NameSpace
6242
stmt, err := m.GetStmts(ctx, skipErrorQuery)
6343
if err != nil {
6444
return nil, fmt.Errorf("get sqls from mapper failed, namespace: %v, err: %v", m.NameSpace, err)
6545
}
66-
stmts = append(stmts, StmtsInfo{
67-
FilePath: m.FilePath,
68-
SQLs: stmt,
69-
})
46+
for _, sql := range stmt {
47+
stmts = append(stmts, StmtInfo{
48+
FilePath: m.FilePath,
49+
SQL: sql,
50+
})
51+
}
7052
}
7153
return stmts, nil
7254
}

parser.go

Lines changed: 5 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -28,57 +28,16 @@ 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;
32-
// you can set `skipErrorQuery` true to ignore invalid query.
33-
func ParseXMLs(data []string, skipErrorQuery bool) ([]string, error) {
34-
ms := ast.NewMappers()
35-
for i := range data {
36-
r := strings.NewReader(data[i])
37-
d := xml.NewDecoder(r)
38-
n, err := parse(d)
39-
if err != nil {
40-
if skipErrorQuery {
41-
continue
42-
} else {
43-
return nil, err
44-
}
45-
}
46-
47-
if n == nil {
48-
continue
49-
}
50-
51-
m, ok := n.(*ast.Mapper)
52-
if !ok {
53-
if skipErrorQuery {
54-
continue
55-
} else {
56-
return nil, errors.New("the mapper is not found")
57-
}
58-
}
59-
err = ms.AddMapper(m)
60-
if err != nil && !skipErrorQuery {
61-
return nil, fmt.Errorf("add mapper failed: %v", err)
62-
}
63-
}
64-
stmts, err := ms.GetStmts(skipErrorQuery)
65-
if err != nil {
66-
return nil, err
67-
}
68-
69-
return stmts, nil
70-
}
71-
72-
type XmlFiles struct {
31+
type XmlFile struct {
7332
FilePath string
7433
Content string
7534
}
7635

77-
// ParseXMLsWithFilePath is a parser for parse all query in several XML files to map[string][]string one by one;
36+
// ParseXMLs is a parser for parse all query in several XML files to []ast.StmtInfo one by one;
7837
// you can set `skipErrorQuery` true to ignore invalid query.
79-
func ParseXMLsWithFilePath(dataFromFiles []XmlFiles, skipErrorQuery bool) ([]ast.StmtsInfo, error) {
38+
func ParseXMLs(data []XmlFile, skipErrorQuery bool) ([]ast.StmtInfo, error) {
8039
ms := ast.NewMappers()
81-
for _, data := range dataFromFiles {
40+
for _, data := range data {
8241
r := strings.NewReader(data.Content)
8342
d := xml.NewDecoder(r)
8443
n, err := parse(d)
@@ -108,7 +67,7 @@ func ParseXMLsWithFilePath(dataFromFiles []XmlFiles, skipErrorQuery bool) ([]ast
10867
return nil, fmt.Errorf("add mapper failed: %v", err)
10968
}
11069
}
111-
stmts, err := ms.GetStmtsWithFilePath(skipErrorQuery)
70+
stmts, err := ms.GetStmts(skipErrorQuery)
11271
if err != nil {
11372
return nil, err
11473
}

0 commit comments

Comments
 (0)