201 lines
4.1 KiB
Go
201 lines
4.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/ettle/strcase"
|
|
"io/ioutil"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
name := "order"
|
|
createSchemaEnt(name)
|
|
createDomain(name)
|
|
createEntity(name)
|
|
createHandler(name)
|
|
createRepository(name)
|
|
createUsecase(name)
|
|
createRouter(name)
|
|
}
|
|
|
|
func createSchemaEnt(name string) {
|
|
fileName := "../../ent/schema/" + name + ".go"
|
|
|
|
file, err := os.Create(fileName)
|
|
if err != nil {
|
|
fmt.Println("error in create file on schema:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
replaced := replace(getFile("schema.text"), name)
|
|
|
|
_, err = file.WriteString(replaced)
|
|
if err != nil {
|
|
fmt.Println("error in write file content on schema:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("%s file created.\n", fileName)
|
|
}
|
|
|
|
func createRouter(name string) {
|
|
fileName := "../../api/handlers/" + name + "s/router.go"
|
|
|
|
os.Mkdir("../../api/handlers/"+name+"s", os.ModePerm)
|
|
|
|
file, err := os.Create(fileName)
|
|
if err != nil {
|
|
fmt.Println("error in create file on route:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
replaced := replace(getFile("router.text"), name)
|
|
|
|
_, err = file.WriteString(replaced)
|
|
if err != nil {
|
|
fmt.Println("error in write file content on route:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("%s file created.\n", fileName)
|
|
}
|
|
func createUsecase(name string) {
|
|
fileName := "../../usecase/" + name + "/service.go"
|
|
|
|
os.Mkdir("../../usecase/"+name, os.ModePerm)
|
|
|
|
file, err := os.Create(fileName)
|
|
if err != nil {
|
|
fmt.Println("error in create file on usecase:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
replaced := replace(getFile("usecase.text"), name)
|
|
|
|
_, err = file.WriteString(replaced)
|
|
if err != nil {
|
|
fmt.Println("error in write file content on usecase:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("%s file created.\n", fileName)
|
|
}
|
|
|
|
func createRepository(name string) {
|
|
fileName := "../../repository/" + name + "/" + name + ".go"
|
|
|
|
os.Mkdir("../../repository/"+name, os.ModePerm)
|
|
|
|
file, err := os.Create(fileName)
|
|
if err != nil {
|
|
fmt.Println("error in create file on repository:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
replaced := replace(getFile("repository.text"), name)
|
|
|
|
_, err = file.WriteString(replaced)
|
|
if err != nil {
|
|
fmt.Println("error in write file content on repository:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("%s file created.\n", fileName)
|
|
}
|
|
|
|
func createHandler(name string) {
|
|
fileName := "../../api/handlers/" + name + "s/" + name + ".go"
|
|
|
|
os.Mkdir("../../api/handlers/"+name+"s", os.ModePerm)
|
|
|
|
file, err := os.Create(fileName)
|
|
if err != nil {
|
|
fmt.Println("error in create file on handlers:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
replaced := replace(getFile("handler.text"), name)
|
|
|
|
_, err = file.WriteString(replaced)
|
|
if err != nil {
|
|
fmt.Println("error in write file content on handlers:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("%s file created.\n", fileName)
|
|
}
|
|
|
|
func createEntity(name string) {
|
|
fileName := "../../entity/" + name + ".go"
|
|
|
|
file, err := os.Create(fileName)
|
|
if err != nil {
|
|
fmt.Println("error in create file on entity:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
replaced := replace(getFile("entity.text"), name)
|
|
|
|
_, err = file.WriteString(replaced)
|
|
if err != nil {
|
|
fmt.Println("error in write file content on entity:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("%s file created.\n", fileName)
|
|
}
|
|
|
|
func createDomain(name string) {
|
|
fileName := "../../domain/" + name + ".go"
|
|
|
|
file, err := os.Create(fileName)
|
|
if err != nil {
|
|
fmt.Println("error in create file on domain:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
replaced := replace(getFile("domain.text"), name)
|
|
|
|
_, err = file.WriteString(replaced)
|
|
if err != nil {
|
|
fmt.Println("error in write file content on domain:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Printf("%s file created.\n", fileName)
|
|
}
|
|
|
|
func getFile(path string) string {
|
|
file, err := os.Open(path)
|
|
if err != nil {
|
|
fmt.Println("error in open file:", err)
|
|
return ""
|
|
}
|
|
defer file.Close()
|
|
|
|
// خواندن محتوای فایل
|
|
content, err := ioutil.ReadAll(file)
|
|
if err != nil {
|
|
fmt.Println("error in read file:", err)
|
|
return ""
|
|
}
|
|
|
|
// تبدیل محتوا به رشته
|
|
return string(content)
|
|
}
|
|
|
|
func replace(c string, name string) string {
|
|
c = strings.ReplaceAll(c, "{name}", name)
|
|
|
|
pascalCaseName := strcase.ToPascal(name)
|
|
return strings.ReplaceAll(c, "{Name}", pascalCaseName)
|
|
}
|