mirror of
https://github.com/opbnq-q/nto-cli.git
synced 2025-12-06 19:20:34 +07:00
feat: service generator
This commit is contained in:
@@ -9,14 +9,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func GenerateScheme(structName string, fields []entities.Field, mkPath string) {
|
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 {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer schemeFile.Close()
|
defer schemeFile.Close()
|
||||||
_, err = schemeFile.WriteString(fmt.Sprintf(
|
_, err = schemeFile.WriteString(fmt.Sprintf(
|
||||||
`<script setup lang="ts">
|
`<script setup lang="ts">
|
||||||
import Table from ../table/Table.vue
|
import Table from '../table/Table.vue'
|
||||||
import { onMounted, reactive } from 'vue'
|
import { onMounted, reactive } from 'vue'
|
||||||
import { getDefaultValues } from '../utils/structs/defaults.util'
|
import { getDefaultValues } from '../utils/structs/defaults.util'
|
||||||
import S from './%s.service.ts'
|
import S from './%s.service.ts'
|
||||||
@@ -25,24 +25,20 @@ import { %s } from '%s'
|
|||||||
|
|
||||||
const service = new S
|
const service = new S
|
||||||
|
|
||||||
onMounted(async () => {
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
const scheme: Scheme = reactive({
|
|
||||||
%s
|
%s
|
||||||
})
|
|
||||||
|
|
||||||
getDefaults = () => getDefaultValues(scheme)
|
const scheme: Scheme<%s> = reactive(%s)
|
||||||
|
|
||||||
|
const getDefaults = () => getDefaultValues(scheme)
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<main class="w-screen h-screen>
|
<main class="w-screen h-screen">
|
||||||
<Table :scheme :service :getDefaults></Table>
|
<Table :scheme :service :getDefaults></Table>
|
||||||
</main>
|
</main>
|
||||||
</template>
|
</template>
|
||||||
`, strings.ToLower(structName), structName, utils.GetServiceStructType(structName), GenerateFields(fields)))
|
`, strings.ToLower(structName), structName, utils.GetServiceStructType(structName), LoadDependencies(fields), structName, GenerateFields(fields)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@@ -51,7 +47,39 @@ getDefaults = () => getDefaultValues(scheme)
|
|||||||
func GenerateFields(fields []entities.Field) string {
|
func GenerateFields(fields []entities.Field) string {
|
||||||
result := "{\n"
|
result := "{\n"
|
||||||
for _, field := range fields {
|
for _, field := range fields {
|
||||||
result += field.Generate() + ", \n"
|
result += field.Name + ":" + field.Generate() + ", \n"
|
||||||
}
|
}
|
||||||
return result + "\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
|
||||||
}
|
}
|
||||||
8
main.go
8
main.go
@@ -1,9 +1,8 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
input "nto_cli/cmd"
|
input "nto_cli/cmd"
|
||||||
// "nto_cli/generation"
|
"nto_cli/generation"
|
||||||
"nto_cli/utils"
|
"nto_cli/utils"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
@@ -17,9 +16,6 @@ func main() {
|
|||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
structFields := utils.GetStructFields(file, structName)
|
structFields := utils.GetStructFields(file, structName)
|
||||||
for _, field := range structFields {
|
|
||||||
fmt.Println(field.Generate())
|
|
||||||
}
|
|
||||||
|
|
||||||
// generation.Generate(structName, structFields)
|
generation.Generate(structName, structFields)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user