Skip to content

Commit 1ebc1b6

Browse files
committed
feat: Add table config
1 parent 64e1da2 commit 1ebc1b6

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

internal/config/config.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,15 @@ type SQL struct {
102102
Table []Table `json:"table" yaml:"table"`
103103
}
104104

105+
func (qsql SQL) GetTable(name string) *Table {
106+
for _, item := range qsql.Table {
107+
if item.Name == name {
108+
return &item
109+
}
110+
}
111+
return nil
112+
}
113+
105114
type SQLGen struct {
106115
Go *SQLGo `json:"go,omitempty" yaml:"go"`
107116
Kotlin *SQLKotlin `json:"kotlin,omitempty" yaml:"kotlin"`

internal/dinosql/gen.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,24 @@ func (r Result) Enums(settings config.CombinedSettings) []GoEnum {
589589
return enums
590590
}
591591

592+
// GetStructName 结构名称
593+
func GetStructName(name string, settings config.CombinedSettings) string {
594+
tb := settings.Package.GetTable(name)
595+
if tb != nil {
596+
name = tb.GetStructName(name)
597+
}
598+
return StructName(name, settings)
599+
}
600+
601+
// GetColumnName 获取字段名称
602+
func GetColumnName(name, tableName string, settings config.CombinedSettings) string {
603+
tb := settings.Package.GetTable(tableName)
604+
if tb != nil {
605+
name = tb.GetColumnName(name)
606+
}
607+
return StructName(name, settings)
608+
}
609+
592610
func StructName(name string, settings config.CombinedSettings) string {
593611
if rename := settings.Rename[name]; rename != "" {
594612
return rename

internal/mysql/gen.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ func (r *Result) Structs(settings config.CombinedSettings) []dinosql.GoStruct {
7979
var structs []dinosql.GoStruct
8080
for tableName, cols := range r.Schema.tables {
8181
s := dinosql.GoStruct{
82-
Name: inflection.Singular(dinosql.StructName(tableName, settings)),
82+
Name: inflection.Singular(dinosql.GetStructName(tableName, settings)),
8383
Table: core.FQN{tableName, "", ""}, // TODO: Complete hack. Only need for equality check to see if struct can be reused between queries
8484
}
8585

8686
for _, col := range cols {
8787
s.Fields = append(s.Fields, dinosql.GoField{
88-
Name: dinosql.StructName(col.Name.String(), settings),
88+
Name: dinosql.GetColumnName(col.Name.String(), tableName, settings),
8989
Type: r.goTypeCol(Column{col, tableName}),
9090
Tags: map[string]string{"json:": col.Name.String()},
9191
Comment: "",
@@ -164,12 +164,11 @@ func (r *Result) GoQueries(settings config.CombinedSettings) []dinosql.GoQuery {
164164
same := true
165165
for i, f := range s.Fields {
166166
c := query.Columns[i]
167-
sameName := f.Name == dinosql.StructName(columnName(c.ColumnDefinition, i), settings)
167+
sameName := f.Name == dinosql.GetColumnName(columnName(c.ColumnDefinition, i), s.Table.Catalog, settings)
168168
sameType := f.Type == r.goTypeCol(c)
169169

170170
hackedFQN := core.FQN{c.Table, "", ""} // TODO: only check needed here is equality to see if struct can be reused, this type should be removed or properly used
171171
sameTable := s.Table.Catalog == hackedFQN.Catalog && s.Table.Schema == hackedFQN.Schema && s.Table.Rel == hackedFQN.Rel
172-
173172
if !sameName || !sameType || !sameTable {
174173
same = false
175174
}

0 commit comments

Comments
 (0)