mirror of
https://github.com/opbnq-q/nto-cli.git
synced 2025-12-06 22:10:35 +07:00
57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package generation
|
|
|
|
import (
|
|
_ "embed"
|
|
"fmt"
|
|
"log"
|
|
"nto_cli/model"
|
|
"nto_cli/utils"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"text/template"
|
|
)
|
|
|
|
//go:embed templates/service.tmpl
|
|
var ServiceTemplate string
|
|
|
|
type ServiceTemplateContext struct {
|
|
LowerModelName string
|
|
ModelName string
|
|
ServicesPath string
|
|
}
|
|
|
|
func GenerateService(model *model.Model, mkPath string) {
|
|
servicePath := filepath.Join(mkPath, strings.ToLower(model.Name)+".service.ts")
|
|
serviceFile, err := os.Create(servicePath)
|
|
if err != nil {
|
|
log.Fatalf("Failed to create service file: %s", err)
|
|
}
|
|
|
|
defer func(serviceFile *os.File) {
|
|
err := serviceFile.Close()
|
|
if err != nil {
|
|
log.Fatalf("Failed to close file: %s", err)
|
|
}
|
|
}(serviceFile)
|
|
|
|
context := ServiceTemplateContext{
|
|
LowerModelName: strings.ToLower(model.Name),
|
|
ModelName: model.Name,
|
|
ServicesPath: GolangServicesPath,
|
|
}
|
|
|
|
serviceTemplate, err := template.New("service").Parse(ServiceTemplate)
|
|
|
|
if err != nil {
|
|
panic(fmt.Sprintf("Failed to parse service template: %s", err))
|
|
}
|
|
|
|
err = serviceTemplate.Execute(serviceFile, context)
|
|
if err != nil {
|
|
log.Fatalf("Failed to execute template: %s", err)
|
|
}
|
|
log.Printf("Service for `%s` model is written: %s", model.Name, servicePath)
|
|
_ = utils.FormatFilesWithPrettier([]string{servicePath})
|
|
}
|