mirror of
https://github.com/cubixle/tuugen.git
synced 2026-04-30 11:48:46 +01:00
finished up generate data models & added some logging
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package tuugen
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"html/template"
|
||||
"path/filepath"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type DataModel struct {
|
||||
@@ -17,14 +19,39 @@ type DataProperty struct {
|
||||
AutoIncrement bool `yaml:"autoinc"`
|
||||
}
|
||||
|
||||
func GenerateDataModels(cfg Config) error {
|
||||
func (p DataProperty) NameCorrected() string {
|
||||
if strings.Contains(p.Name, "_") {
|
||||
parts := strings.Split(p.Name, "_")
|
||||
newParts := []string{}
|
||||
for _, p := range parts {
|
||||
newParts = append(newParts, strings.Title(p))
|
||||
}
|
||||
return strings.Join(newParts, "")
|
||||
}
|
||||
return strings.Title(p.Name)
|
||||
}
|
||||
|
||||
func (p DataProperty) DBTypeToGoType() string {
|
||||
switch p.Type {
|
||||
case "varchar":
|
||||
return "string"
|
||||
case "timestamp":
|
||||
return "time.Time"
|
||||
case "int":
|
||||
return "int32"
|
||||
default:
|
||||
return "string"
|
||||
}
|
||||
}
|
||||
|
||||
func GenerateDataModels(FS embed.FS, cfg Config) error {
|
||||
for _, dm := range cfg.DataModels {
|
||||
t, err := template.ParseFS(FS, "templates/data_model.go.tmpl")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
outputFile := "internal/data/models.go"
|
||||
outputFile := "internal/storage/" + strings.ToLower(dm.Name) + ".go"
|
||||
fp := filepath.Dir(outputFile)
|
||||
if err := os.MkdirAll(fp, 0777); err != nil {
|
||||
return err
|
||||
@@ -39,4 +66,5 @@ func GenerateDataModels(cfg Config) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user