package main import ( "fmt" "github.com/ettle/strcase" "io/ioutil" "os" "strings" ) func main() { name := "order" createDomain(name) createEntity(name) createHandler(name) createRepository(name) createUsecase(name) createRouter(name) } 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) }