MCPcopy
hub / github.com/zeromicro/go-zero / Parse

Function Parse

tools/goctl/model/sql/parser/parser.go:67–172  ·  view source on GitHub ↗

Parse parses ddl into golang structure

(filename, database string, strict bool)

Source from the content-addressed store, hash-verified

65
66// Parse parses ddl into golang structure
67func Parse(filename, database string, strict bool) ([]*Table, error) {
68 p := parser.NewParser()
69 tables, err := p.From(filename)
70 if err != nil {
71 return nil, err
72 }
73
74 nameOriginals := parseNameOriginal(tables)
75 indexNameGen := func(column ...string) string {
76 return strings.Join(column, "_")
77 }
78
79 prefix := filepath.Base(filename)
80 var list []*Table
81 for indexTable, e := range tables {
82 var (
83 primaryColumn string
84 primaryColumnSet = collection.NewSet[string]()
85 uniqueKeyMap = make(map[string][]string)
86 // Unused local variable
87 // normalKeyMap = make(map[string][]string)
88 columns = e.Columns
89 )
90
91 for _, column := range columns {
92 if column.Constraint != nil {
93 if column.Constraint.Primary {
94 primaryColumnSet.Add(column.Name)
95 }
96
97 if column.Constraint.Unique {
98 indexName := indexNameGen(column.Name, "unique")
99 uniqueKeyMap[indexName] = []string{column.Name}
100 }
101
102 if column.Constraint.Key {
103 indexName := indexNameGen(column.Name, "idx")
104 uniqueKeyMap[indexName] = []string{column.Name}
105 }
106 }
107 }
108
109 for _, e := range e.Constraints {
110 if len(e.ColumnPrimaryKey) > 1 {
111 return nil, fmt.Errorf("%s: unexpected join primary key", prefix)
112 }
113
114 if len(e.ColumnPrimaryKey) == 1 {
115 primaryColumn = e.ColumnPrimaryKey[0]
116 primaryColumnSet.Add(e.ColumnPrimaryKey[0])
117 }
118
119 if len(e.ColumnUniqueKey) > 0 {
120 list := append([]string(nil), e.ColumnUniqueKey...)
121 list = append(list, "unique")
122 indexName := indexNameGen(list...)
123 uniqueKeyMap[indexName] = e.ColumnUniqueKey
124 }

Callers 5

genFromDDLMethod · 0.92
Test_genPublicModelFunction · 0.92
TestParsePlainTextFunction · 0.70
TestParseSelectFunction · 0.70
TestParseCreateTableFunction · 0.70

Calls 9

FromFunction · 0.92
parseNameOriginalFunction · 0.85
deleteFunction · 0.85
convertColumnsFunction · 0.85
JoinMethod · 0.80
AddMethod · 0.65
ErrorfMethod · 0.65
CountMethod · 0.45

Tested by 4

Test_genPublicModelFunction · 0.74
TestParsePlainTextFunction · 0.56
TestParseSelectFunction · 0.56
TestParseCreateTableFunction · 0.56

Used in the wild real call sites across dependent graphs

searching dependent graphs…