46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package main
|
|
|
|
import "strings"
|
|
import "github.com/Azareal/Gosora/query_gen"
|
|
|
|
type PrimaryKeySpitter struct {
|
|
keys map[string]string
|
|
}
|
|
|
|
func NewPrimaryKeySpitter() *PrimaryKeySpitter {
|
|
return &PrimaryKeySpitter{make(map[string]string)}
|
|
}
|
|
|
|
func (spit *PrimaryKeySpitter) Hook(name string, args ...interface{}) error {
|
|
if name == "CreateTableStart" {
|
|
var found string
|
|
var table = args[0].(*qgen.DBInstallTable)
|
|
for _, key := range table.Keys {
|
|
if key.Type == "primary" {
|
|
expl := strings.Split(key.Columns, ",")
|
|
if len(expl) > 1 {
|
|
continue
|
|
}
|
|
found = key.Columns
|
|
}
|
|
if found != "" {
|
|
table := table.Name
|
|
spit.keys[table] = found
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (spit *PrimaryKeySpitter) Write() error {
|
|
out := `// Generated by Gosora's Query Generator. DO NOT EDIT.
|
|
package main
|
|
|
|
var dbTablePrimaryKeys = map[string]string{
|
|
`
|
|
for table, key := range spit.keys {
|
|
out += "\t\"" + table + "\":\"" + key + "\",\n"
|
|
}
|
|
return writeFile("./gen_tables.go", out+"}\n")
|
|
}
|