From 53979b3d4f8156ffc110dfb4e05ac6b110fea615 Mon Sep 17 00:00:00 2001 From: kobaken Date: Wed, 7 Aug 2024 10:14:45 +0900 Subject: [PATCH] add structName & fieldName implements --- internal/gen.go | 27 +++++++++++++++++++++++++-- internal/opts/options.go | 1 + 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/internal/gen.go b/internal/gen.go index 38e4ed1..4cf48ad 100644 --- a/internal/gen.go +++ b/internal/gen.go @@ -6,6 +6,7 @@ import ( "bytes" "context" "sort" + "unicode" //"errors" //"fmt" @@ -158,11 +159,33 @@ func buildStructs(req *plugin.GenerateRequest, options *opts.Options) []Struct { } func structName(name string, options *opts.Options) string { - return sdk.LowerTitle(name) + if rename := options.Rename[name]; rename != "" { + return rename + } + out := "" + 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.Split(name, "_") { + if p == "id" { + out += "ID" + } else { + out += strings.Title(p) + } + } + + return out; } func fieldName(name string, options *opts.Options) string { - return sdk.LowerTitle(name) + return structName(name, options) } func perlType(req *plugin.GenerateRequest, options *opts.Options, column *plugin.Column) string { diff --git a/internal/opts/options.go b/internal/opts/options.go index 69dbe03..c1f9f9c 100644 --- a/internal/opts/options.go +++ b/internal/opts/options.go @@ -11,6 +11,7 @@ import ( type Options struct { Package string `json:"package" yaml:"package"` + Rename map[string]string `json:"rename,omitempty" yaml:"rename"` OutputModelsFileName string `json:"output_models_file_name,omitempty" yaml:"output_models_file_name"` }