diff --git a/generation/scheme.go b/generation/scheme.go index e65474b..714df5f 100644 --- a/generation/scheme.go +++ b/generation/scheme.go @@ -9,14 +9,14 @@ import ( ) func GenerateScheme(structName string, fields []entities.Field, mkPath string) { - schemeFile, err := os.Create(mkPath + "/" + strings.ToTitle(structName) + "Scheme.vue") + schemeFile, err := os.Create(mkPath + "/" + strings.ToUpper(structName[:1]) + strings.ToLower(structName[1:]) + "Scheme.vue") if err != nil { panic(err) } defer schemeFile.Close() _, err = schemeFile.WriteString(fmt.Sprintf( ` -`, strings.ToLower(structName), structName, utils.GetServiceStructType(structName), GenerateFields(fields))) +`, strings.ToLower(structName), structName, utils.GetServiceStructType(structName), LoadDependencies(fields), structName, GenerateFields(fields))) if err != nil { panic(err) } @@ -51,7 +47,39 @@ getDefaults = () => getDefaultValues(scheme) func GenerateFields(fields []entities.Field) string { result := "{\n" for _, field := range fields { - result += field.Generate() + ", \n" + result += field.Name + ":" + field.Generate() + ", \n" } return result + "\n}" +} + +func LoadDependencies(fields []entities.Field) string { + type Dependency struct{ + fieldName string + dependencyName string + } + + result := "" + dependencies := []Dependency{} + for _, field := range fields { + for _, meta := range field.Medatada { + if meta.Name == "data" { + dependency := meta.Values[0] + dependencies = append(dependencies, Dependency{ + fieldName: field.Name, + dependencyName: dependency, + }) + result += fmt.Sprintf("import %sService from '../%s/%s.service.ts'\n", dependency, strings.ToUpper(dependency[:1]) + strings.ToLower(dependency[1:]), strings.ToLower(dependency)) + result += fmt.Sprintf("const %sService = new %sService\n", strings.ToLower(dependency), strings.ToUpper(dependency[:1]) + strings.ToLower(dependency[1:])) + } + } + } + insertIntoScheme := "" + for _, dep := range dependencies { + insertIntoScheme += fmt.Sprintf("scheme.%s.type!.nested!.values = await %sService.readAll()\n", dep.fieldName, strings.ToLower(dep.dependencyName)) + } + + result += fmt.Sprintf(`onMounted(async () => { + %s +})` + "\n", insertIntoScheme) + return result } \ No newline at end of file diff --git a/main.go b/main.go index 4928e70..a8b776a 100644 --- a/main.go +++ b/main.go @@ -1,9 +1,8 @@ package main import ( - "fmt" input "nto_cli/cmd" - // "nto_cli/generation" + "nto_cli/generation" "nto_cli/utils" "os" ) @@ -17,9 +16,6 @@ func main() { defer file.Close() structFields := utils.GetStructFields(file, structName) - for _, field := range structFields { - fmt.Println(field.Generate()) - } - // generation.Generate(structName, structFields) + generation.Generate(structName, structFields) }