Files
upstream-mirror 0f4df23290
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
2026-09-16 02:17:34 +05:00

54 lines
1.2 KiB
Go

package golang
import (
"strings"
"unicode"
"unicode/utf8"
"github.com/sqlc-dev/sqlc/internal/codegen/golang/opts"
"github.com/sqlc-dev/sqlc/internal/plugin"
)
type Struct struct {
Table *plugin.Identifier
Name string
Fields []Field
Comment string
// IsModel is true for table structs that live in the models file. When
// the models file is generated into a different Go package, references
// to these types from query files must be qualified.
IsModel bool
}
func StructName(name string, options *opts.Options) string {
if rename := options.Rename[name]; rename != "" {
return rename
}
var out strings.Builder
name = strings.Map(func(r rune) rune {
if unicode.IsLetter(r) {
return r
}
if unicode.IsDigit(r) {
return r
}
return rune('_')
}, name)
for p := range strings.SplitSeq(name, "_") {
if _, found := options.InitialismsMap[p]; found {
out.WriteString(strings.ToUpper(p))
} else {
out.WriteString(strings.Title(p))
}
}
// If a name has a digit as its first char, prepand an underscore to make it a valid Go name.
r, _ := utf8.DecodeRuneInString(out.String())
if unicode.IsDigit(r) {
return "_" + out.String()
} else {
return out.String()
}
}