You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.3 KiB
72 lines
1.3 KiB
1 year ago
|
package parser
|
||
|
|
||
|
import (
|
||
|
"git.diulo.com/mogfee/kit/mysql/ddl"
|
||
|
)
|
||
|
|
||
|
const timeImport = "time.Time"
|
||
|
|
||
|
type (
|
||
|
Table struct {
|
||
|
Name string
|
||
|
Db string
|
||
|
PrimaryKey Primary
|
||
|
UniqueIndex map[string][]*Field
|
||
|
Fields []*Field
|
||
|
}
|
||
|
Primary struct {
|
||
|
Field
|
||
|
AutoIncrement bool
|
||
|
}
|
||
|
Field struct {
|
||
|
NameOriginal string
|
||
|
Name string
|
||
|
DateType string
|
||
|
Comment string
|
||
|
SeqInIndex int
|
||
|
OrdinalPosition int
|
||
|
ContainsPQ bool
|
||
|
}
|
||
|
KeyType int
|
||
|
)
|
||
|
|
||
|
func parseNameOriginal(ts []*ddl.Table) (nameOriginals [][]string) {
|
||
|
var columns []string
|
||
|
for _, t := range ts {
|
||
|
columns = []string{}
|
||
|
for _, c := range t.Columns {
|
||
|
columns = append(columns, c.Name)
|
||
|
}
|
||
|
nameOriginals = append(nameOriginals, columns)
|
||
|
}
|
||
|
return nameOriginals
|
||
|
}
|
||
|
|
||
|
func Parse(filename, database string, strict bool) ([]*Table, error) {
|
||
|
list := make([]*Table, 0)
|
||
|
err := ddl.Parser(filename, func(table *ddl.Table) error {
|
||
|
|
||
|
list = append(list, &Table{
|
||
|
Name: table.Name,
|
||
|
Db: "",
|
||
|
PrimaryKey: Primary{
|
||
|
Field: Field{
|
||
|
NameOriginal: "",
|
||
|
Name: "",
|
||
|
DateType: "",
|
||
|
Comment: "",
|
||
|
SeqInIndex: 0,
|
||
|
OrdinalPosition: 0,
|
||
|
ContainsPQ: false,
|
||
|
},
|
||
|
AutoIncrement: false,
|
||
|
},
|
||
|
UniqueIndex: nil,
|
||
|
Fields: nil,
|
||
|
})
|
||
|
|
||
|
return nil
|
||
|
})
|
||
|
return list, err
|
||
|
}
|