Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
AlekSi committed Dec 6, 2020
1 parent c76e205 commit 821dd24
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 40 deletions.
12 changes: 2 additions & 10 deletions internal/test/models/extra_reform.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 5 additions & 25 deletions internal/test/models/good_reform.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions parse/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,19 @@ func (s *StructInfo) IsTable() bool {
return s.PKFieldIndex >= 0
}

func (s *StructInfo) IsIntPK() bool {
switch s.PKField().Type {
case "int", "int8", "int16", "int32", "int64":
return true
case "uint", "uint8", "uint16", "uint32", "uint64":
return true
case "byte", "rune":
return true
default:
return false
}
}

// PKField returns a primary key field, panics for views.
func (s *StructInfo) PKField() FieldInfo {
if !s.IsTable() {
Expand Down
19 changes: 14 additions & 5 deletions reform/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,17 +125,26 @@ func (s *{{ .Type }}) HasPK() bool {
return s.{{ .PKField.Name }} != {{ .TableVar }}.z[{{ .TableVar }}.s.PKFieldIndex]
}
{{- if .IsIntPK }}
// SetPK sets record primary key.
//
// Prefer direct field assignment where possible: s.{{ .PKField.Name }} = pk.
func (s *{{ .Type }}) SetPK(pk interface{}) {
if i64, ok := pk.(int64); ok {
s.{{ .PKField.Name }} = {{ .PKField.Type }}(i64)
} else {
s.{{ .PKField.Name }} = pk.({{ .PKField.Type }})
}
s.{{ .PKField.Name }} = {{ .PKField.Type }}(pk.(int64))
}
{{ else }}
// SetPK sets record primary key.
//
// Prefer direct field assignment where possible: s.{{ .PKField.Name }} = pk.
func (s *{{ .Type }}) SetPK(pk interface{}) {
s.{{ .PKField.Name }} = pk.({{ .PKField.Type }})
}
{{- end }}
{{- end }}
// check interfaces
Expand Down

0 comments on commit 821dd24

Please sign in to comment.