mirror of
https://gitee.com/johng/gf
synced 2026-06-06 02:25:47 +08:00
enhance: gf gen ctrl with -merge option (#3490)
This commit is contained in:
@ -82,3 +82,228 @@ func Test_Gen_Ctrl_Default(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// https://github.com/gogf/gf/issues/3460
|
||||
func Test_Gen_Ctrl_UseMerge_Issue3460(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
var (
|
||||
ctrlPath = gfile.Temp(guid.S())
|
||||
//ctrlPath = gtest.DataPath("issue", "3460", "controller")
|
||||
apiFolder = gtest.DataPath("issue", "3460", "api")
|
||||
in = genctrl.CGenCtrlInput{
|
||||
SrcFolder: apiFolder,
|
||||
DstFolder: ctrlPath,
|
||||
WatchFile: "",
|
||||
SdkPath: "",
|
||||
SdkStdVersion: false,
|
||||
SdkNoV1: false,
|
||||
Clear: false,
|
||||
Merge: true,
|
||||
}
|
||||
)
|
||||
|
||||
err := gfile.Mkdir(ctrlPath)
|
||||
t.AssertNil(err)
|
||||
defer gfile.Remove(ctrlPath)
|
||||
|
||||
_, err = genctrl.CGenCtrl{}.Ctrl(ctx, in)
|
||||
t.AssertNil(err)
|
||||
|
||||
files, err := gfile.ScanDir(ctrlPath, "*.go", true)
|
||||
t.AssertNil(err)
|
||||
t.Assert(files, []string{
|
||||
filepath.Join(ctrlPath, "/hello/hello.go"),
|
||||
filepath.Join(ctrlPath, "/hello/hello_new.go"),
|
||||
filepath.Join(ctrlPath, "/hello/hello_v1_req.go"),
|
||||
filepath.Join(ctrlPath, "/hello/hello_v2_req.go"),
|
||||
})
|
||||
|
||||
expectCtrlPath := gtest.DataPath("issue", "3460", "controller")
|
||||
expectFiles := []string{
|
||||
filepath.Join(expectCtrlPath, "/hello/hello.go"),
|
||||
filepath.Join(expectCtrlPath, "/hello/hello_new.go"),
|
||||
filepath.Join(expectCtrlPath, "/hello/hello_v1_req.go"),
|
||||
filepath.Join(expectCtrlPath, "/hello/hello_v2_req.go"),
|
||||
}
|
||||
|
||||
// Line Feed maybe \r\n or \n
|
||||
for i, expectFile := range expectFiles {
|
||||
val := gfile.GetContents(files[i])
|
||||
expect := gfile.GetContents(expectFile)
|
||||
t.Assert(val, expect)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// gf gen ctrl -m
|
||||
// In the same module, different API files are added
|
||||
func Test_Gen_Ctrl_UseMerge_AddNewFile(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
var (
|
||||
ctrlPath = gfile.Temp(guid.S())
|
||||
//ctrlPath = gtest.DataPath("issue", "3460", "controller")
|
||||
apiFolder = gtest.DataPath("genctrl-merge", "add_new_file", "api")
|
||||
in = genctrl.CGenCtrlInput{
|
||||
SrcFolder: apiFolder,
|
||||
DstFolder: ctrlPath,
|
||||
Merge: true,
|
||||
}
|
||||
)
|
||||
const testNewApiFile = `
|
||||
package v1
|
||||
import "github.com/gogf/gf/v2/frame/g"
|
||||
type DictTypeAddReq struct {
|
||||
g.Meta
|
||||
}
|
||||
type DictTypeAddRes struct {
|
||||
}
|
||||
`
|
||||
|
||||
err := gfile.Mkdir(ctrlPath)
|
||||
t.AssertNil(err)
|
||||
defer gfile.Remove(ctrlPath)
|
||||
|
||||
_, err = genctrl.CGenCtrl{}.Ctrl(ctx, in)
|
||||
t.AssertNil(err)
|
||||
|
||||
var (
|
||||
genApi = filepath.Join(apiFolder, "/dict/dict.go")
|
||||
genApiExpect = filepath.Join(apiFolder, "/dict/dict_expect.go")
|
||||
)
|
||||
defer gfile.Remove(genApi)
|
||||
t.Assert(gfile.GetContents(genApi), gfile.GetContents(genApiExpect))
|
||||
|
||||
genCtrlFiles, err := gfile.ScanDir(ctrlPath, "*.go", true)
|
||||
t.AssertNil(err)
|
||||
t.Assert(genCtrlFiles, []string{
|
||||
filepath.Join(ctrlPath, "/dict/dict.go"),
|
||||
filepath.Join(ctrlPath, "/dict/dict_new.go"),
|
||||
filepath.Join(ctrlPath, "/dict/dict_v1_dict_type.go"),
|
||||
})
|
||||
|
||||
expectCtrlPath := gtest.DataPath("genctrl-merge", "add_new_file", "controller")
|
||||
expectFiles := []string{
|
||||
filepath.Join(expectCtrlPath, "/dict/dict.go"),
|
||||
filepath.Join(expectCtrlPath, "/dict/dict_new.go"),
|
||||
filepath.Join(expectCtrlPath, "/dict/dict_v1_dict_type.go"),
|
||||
}
|
||||
|
||||
// Line Feed maybe \r\n or \n
|
||||
expectFilesContent(t, genCtrlFiles, expectFiles)
|
||||
|
||||
// Add a new API file
|
||||
newApiFilePath := filepath.Join(apiFolder, "/dict/v1/test_new.go")
|
||||
err = gfile.PutContents(newApiFilePath, testNewApiFile)
|
||||
t.AssertNil(err)
|
||||
defer gfile.Remove(newApiFilePath)
|
||||
|
||||
// Then execute the command
|
||||
_, err = genctrl.CGenCtrl{}.Ctrl(ctx, in)
|
||||
t.AssertNil(err)
|
||||
|
||||
genApi = filepath.Join(apiFolder, "/dict.go")
|
||||
genApiExpect = filepath.Join(apiFolder, "/dict_add_new_ctrl_expect.gotest")
|
||||
|
||||
t.Assert(gfile.GetContents(genApi), gfile.GetContents(genApiExpect))
|
||||
|
||||
genCtrlFiles = append(genCtrlFiles, filepath.Join(ctrlPath, "/dict/dict_v1_test_new.go"))
|
||||
// Use the gotest suffix, otherwise the IDE will delete the import
|
||||
expectFiles = append(expectFiles, filepath.Join(expectCtrlPath, "/dict/dict_v1_test_new.gotest"))
|
||||
// Line Feed maybe \r\n or \n
|
||||
expectFilesContent(t, genCtrlFiles, expectFiles)
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
// gf gen ctrl -m
|
||||
// In the same module, Add the same file to the API
|
||||
func Test_Gen_Ctrl_UseMerge_AddNewCtrl(t *testing.T) {
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
var (
|
||||
ctrlPath = gfile.Temp(guid.S())
|
||||
//ctrlPath = gtest.DataPath("issue", "3460", "controller")
|
||||
apiFolder = gtest.DataPath("genctrl-merge", "add_new_ctrl", "api")
|
||||
in = genctrl.CGenCtrlInput{
|
||||
SrcFolder: apiFolder,
|
||||
DstFolder: ctrlPath,
|
||||
Merge: true,
|
||||
}
|
||||
)
|
||||
|
||||
err := gfile.Mkdir(ctrlPath)
|
||||
t.AssertNil(err)
|
||||
defer gfile.Remove(ctrlPath)
|
||||
|
||||
_, err = genctrl.CGenCtrl{}.Ctrl(ctx, in)
|
||||
t.AssertNil(err)
|
||||
|
||||
var (
|
||||
genApi = filepath.Join(apiFolder, "/dict/dict.go")
|
||||
genApiExpect = filepath.Join(apiFolder, "/dict/dict_expect.go")
|
||||
)
|
||||
defer gfile.Remove(genApi)
|
||||
t.Assert(gfile.GetContents(genApi), gfile.GetContents(genApiExpect))
|
||||
|
||||
genCtrlFiles, err := gfile.ScanDir(ctrlPath, "*.go", true)
|
||||
t.AssertNil(err)
|
||||
t.Assert(genCtrlFiles, []string{
|
||||
filepath.Join(ctrlPath, "/dict/dict.go"),
|
||||
filepath.Join(ctrlPath, "/dict/dict_new.go"),
|
||||
filepath.Join(ctrlPath, "/dict/dict_v1_dict_type.go"),
|
||||
})
|
||||
|
||||
expectCtrlPath := gtest.DataPath("genctrl-merge", "add_new_ctrl", "controller")
|
||||
expectFiles := []string{
|
||||
filepath.Join(expectCtrlPath, "/dict/dict.go"),
|
||||
filepath.Join(expectCtrlPath, "/dict/dict_new.go"),
|
||||
filepath.Join(expectCtrlPath, "/dict/dict_v1_dict_type.go"),
|
||||
}
|
||||
|
||||
// Line Feed maybe \r\n or \n
|
||||
expectFilesContent(t, genCtrlFiles, expectFiles)
|
||||
|
||||
const testNewApiFile = `
|
||||
|
||||
type DictTypeAddReq struct {
|
||||
g.Meta
|
||||
}
|
||||
type DictTypeAddRes struct {
|
||||
}
|
||||
`
|
||||
dictModuleFileName := filepath.Join(apiFolder, "/dict/v1/dict_type.go")
|
||||
// Save the contents of the file before the changes
|
||||
apiFileContents := gfile.GetContents(dictModuleFileName)
|
||||
|
||||
// Add a new API file
|
||||
err = gfile.PutContentsAppend(dictModuleFileName, testNewApiFile)
|
||||
t.AssertNil(err)
|
||||
|
||||
//==================================
|
||||
// Then execute the command
|
||||
_, err = genctrl.CGenCtrl{}.Ctrl(ctx, in)
|
||||
t.AssertNil(err)
|
||||
|
||||
genApi = filepath.Join(apiFolder, "/dict.go")
|
||||
genApiExpect = filepath.Join(apiFolder, "/dict_add_new_ctrl_expect.gotest")
|
||||
t.Assert(gfile.GetContents(genApi), gfile.GetContents(genApiExpect))
|
||||
|
||||
// Use the gotest suffix, otherwise the IDE will delete the import
|
||||
expectFiles[2] = filepath.Join(expectCtrlPath, "/dict/dict_v1_test_new.gotest")
|
||||
// Line Feed maybe \r\n or \n
|
||||
expectFilesContent(t, genCtrlFiles, expectFiles)
|
||||
|
||||
// Restore the contents of the original API file
|
||||
err = gfile.PutContents(dictModuleFileName, apiFileContents)
|
||||
t.AssertNil(err)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func expectFilesContent(t *gtest.T, paths []string, expectPaths []string) {
|
||||
for i, expectFile := range expectPaths {
|
||||
val := gfile.GetContents(paths[i])
|
||||
expect := gfile.GetContents(expectFile)
|
||||
t.Assert(val, expect)
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ package genctrl
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/consts"
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/utility/mlog"
|
||||
@ -42,8 +43,16 @@ func (c *controllerGenerator) Generate(dstModuleFolderPath string, apiModuleApiI
|
||||
); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// use -merge
|
||||
if merge {
|
||||
err = c.doGenerateCtrlMergeItem(dstModuleFolderPath, subItems, doneApiItemSet)
|
||||
continue
|
||||
}
|
||||
|
||||
for _, subItem := range subItems {
|
||||
if err = c.doGenerateCtrlItem(dstModuleFolderPath, subItem, merge); err != nil {
|
||||
err = c.doGenerateCtrlItem(dstModuleFolderPath, subItem)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
doneApiItemSet.Add(subItem.String())
|
||||
@ -116,7 +125,7 @@ func (c *controllerGenerator) doGenerateCtrlNewByModuleAndVersion(
|
||||
return
|
||||
}
|
||||
|
||||
func (c *controllerGenerator) doGenerateCtrlItem(dstModuleFolderPath string, item apiItem, merge bool) (err error) {
|
||||
func (c *controllerGenerator) doGenerateCtrlItem(dstModuleFolderPath string, item apiItem) (err error) {
|
||||
var (
|
||||
methodNameSnake = gstr.CaseSnake(item.MethodName)
|
||||
ctrlName = fmt.Sprintf(`Controller%s`, gstr.UcFirst(item.Version))
|
||||
@ -126,13 +135,6 @@ func (c *controllerGenerator) doGenerateCtrlItem(dstModuleFolderPath string, ite
|
||||
)
|
||||
var content string
|
||||
|
||||
if merge {
|
||||
methodFilePath = gfile.Join(dstModuleFolderPath, fmt.Sprintf(
|
||||
`%s_%s_%s.go`, item.Module, item.Version, item.FileName,
|
||||
))
|
||||
|
||||
}
|
||||
|
||||
if gfile.Exists(methodFilePath) {
|
||||
content = gstr.ReplaceByMap(consts.TemplateGenCtrlControllerMethodFuncMerge, g.MapStrStr{
|
||||
"{Module}": item.Module,
|
||||
@ -162,3 +164,64 @@ func (c *controllerGenerator) doGenerateCtrlItem(dstModuleFolderPath string, ite
|
||||
mlog.Printf(`generated: %s`, methodFilePath)
|
||||
return
|
||||
}
|
||||
|
||||
// use -merge
|
||||
func (c *controllerGenerator) doGenerateCtrlMergeItem(dstModuleFolderPath string, apiItems []apiItem, doneApiSet *gset.StrSet) (err error) {
|
||||
|
||||
type controllerFileItem struct {
|
||||
module string
|
||||
version string
|
||||
importPath string
|
||||
// Each ctrlFileItem has multiple CTRLs
|
||||
controllers strings.Builder
|
||||
}
|
||||
// It is possible that there are multiple files under one module
|
||||
ctrlFileItemMap := make(map[string]*controllerFileItem)
|
||||
|
||||
for _, api := range apiItems {
|
||||
ctrlFileItem, found := ctrlFileItemMap[api.FileName]
|
||||
if !found {
|
||||
ctrlFileItem = &controllerFileItem{
|
||||
module: api.Module,
|
||||
version: api.Version,
|
||||
controllers: strings.Builder{},
|
||||
importPath: api.Import,
|
||||
}
|
||||
ctrlFileItemMap[api.FileName] = ctrlFileItem
|
||||
}
|
||||
|
||||
ctrl := gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlControllerMethodFuncMerge, g.MapStrStr{
|
||||
"{Module}": api.Module,
|
||||
"{CtrlName}": fmt.Sprintf(`Controller%s`, gstr.UcFirst(api.Version)),
|
||||
"{Version}": api.Version,
|
||||
"{MethodName}": api.MethodName,
|
||||
}))
|
||||
ctrlFileItem.controllers.WriteString(ctrl)
|
||||
doneApiSet.Add(api.String())
|
||||
}
|
||||
|
||||
for ctrlFileName, ctrlFileItem := range ctrlFileItemMap {
|
||||
ctrlFilePath := gfile.Join(dstModuleFolderPath, fmt.Sprintf(
|
||||
`%s_%s_%s.go`, ctrlFileItem.module, ctrlFileItem.version, ctrlFileName,
|
||||
))
|
||||
|
||||
// This logic is only followed when a new ctrlFileItem is generated
|
||||
// Most of the rest of the time, the following logic is followed
|
||||
if !gfile.Exists(ctrlFilePath) {
|
||||
ctrlFileHeader := gstr.TrimLeft(gstr.ReplaceByMap(consts.TemplateGenCtrlControllerHeader, g.MapStrStr{
|
||||
"{Module}": ctrlFileItem.module,
|
||||
"{ImportPath}": ctrlFileItem.importPath,
|
||||
}))
|
||||
err = gfile.PutContents(ctrlFilePath, ctrlFileHeader)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if err = gfile.PutContentsAppend(ctrlFilePath, ctrlFileItem.controllers.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
mlog.Printf(`generated: %s`, ctrlFilePath)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest
vendored
Normal file
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_add_new_ctrl_expect.gotest
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1"
|
||||
)
|
||||
|
||||
type IDictV1 interface {
|
||||
DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error)
|
||||
DictTypeAdd(ctx context.Context, req *v1.DictTypeAddReq) (res *v1.DictTypeAddRes, err error)
|
||||
}
|
||||
|
||||
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_expect.go
vendored
Normal file
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/dict_expect.go
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1"
|
||||
)
|
||||
|
||||
type IDictV1 interface {
|
||||
DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error)
|
||||
}
|
||||
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1/dict_type.go
vendored
Normal file
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1/dict_type.go
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
||||
//
|
||||
// This Source Code Form is subject to the terms of the MIT License.
|
||||
// If a copy of the MIT was not distributed with this file,
|
||||
// You can obtain one at https://github.com/gogf/gf.
|
||||
|
||||
package v1
|
||||
|
||||
import "github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
type DictTypeAddPageReq struct {
|
||||
g.Meta `path:"/dict/type/add" tags:"字典管理" method:"get" summary:"字典类型添加页面"`
|
||||
}
|
||||
|
||||
type DictTypeAddPageRes struct {
|
||||
g.Meta `mime:"text/html" type:"string" example:"<html/>"`
|
||||
}
|
||||
5
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict.go
vendored
Normal file
5
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict.go
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_new.go
vendored
Normal file
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_new.go
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict"
|
||||
)
|
||||
|
||||
type ControllerV1 struct{}
|
||||
|
||||
func NewV1() dict.IDictV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
14
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go
vendored
Normal file
14
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_dict_type.go
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest
vendored
Normal file
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_ctrl/controller/dict/dict_v1_test_new.gotest
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
func (c *ControllerV1) DictTypeAdd(ctx context.Context, req *v1.DictTypeAddReq) (res *v1.DictTypeAddRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest
vendored
Normal file
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_add_new_ctrl_expect.gotest
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_ctrl/api/dict/v1"
|
||||
)
|
||||
|
||||
type IDictV1 interface {
|
||||
DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error)
|
||||
DictTypeAdd(ctx context.Context, req *v1.DictTypeAddReq) (res *v1.DictTypeAddRes, err error)
|
||||
}
|
||||
|
||||
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_expect.go
vendored
Normal file
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/dict_expect.go
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1"
|
||||
)
|
||||
|
||||
type IDictV1 interface {
|
||||
DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error)
|
||||
}
|
||||
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1/dict_type.go
vendored
Normal file
17
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1/dict_type.go
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
||||
//
|
||||
// This Source Code Form is subject to the terms of the MIT License.
|
||||
// If a copy of the MIT was not distributed with this file,
|
||||
// You can obtain one at https://github.com/gogf/gf.
|
||||
|
||||
package v1
|
||||
|
||||
import "github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
type DictTypeAddPageReq struct {
|
||||
g.Meta `path:"/dict/type/add" tags:"字典管理" method:"get" summary:"字典类型添加页面"`
|
||||
}
|
||||
|
||||
type DictTypeAddPageRes struct {
|
||||
g.Meta `mime:"text/html" type:"string" example:"<html/>"`
|
||||
}
|
||||
5
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict.go
vendored
Normal file
5
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict.go
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_new.go
vendored
Normal file
15
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_new.go
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package dict
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict"
|
||||
)
|
||||
|
||||
type ControllerV1 struct{}
|
||||
|
||||
func NewV1() dict.IDictV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
14
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_dict_type.go
vendored
Normal file
14
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_dict_type.go
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
14
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_test_new.gotest
vendored
Normal file
14
cmd/gf/internal/cmd/testdata/genctrl-merge/add_new_file/controller/dict/dict_v1_test_new.gotest
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
package dict
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/genctrl-merge/add_new_file/api/dict/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) DictTypeAdd(ctx context.Context, req *v1.DictTypeAddReq) (res *v1.DictTypeAddRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
26
cmd/gf/internal/cmd/testdata/issue/3460/api/hello/hello.go
vendored
Normal file
26
cmd/gf/internal/cmd/testdata/issue/3460/api/hello/hello.go
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package hello
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/issue/3460/api/hello/v1"
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/issue/3460/api/hello/v2"
|
||||
)
|
||||
|
||||
type IHelloV1 interface {
|
||||
DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error)
|
||||
DictTypeAdd(ctx context.Context, req *v1.DictTypeAddReq) (res *v1.DictTypeAddRes, err error)
|
||||
DictTypeEditPage(ctx context.Context, req *v1.DictTypeEditPageReq) (res *v1.DictTypeEditPageRes, err error)
|
||||
DictTypeEdit(ctx context.Context, req *v1.DictTypeEditReq) (res *v1.DictTypeEditRes, err error)
|
||||
}
|
||||
|
||||
type IHelloV2 interface {
|
||||
DictTypeAddPage(ctx context.Context, req *v2.DictTypeAddPageReq) (res *v2.DictTypeAddPageRes, err error)
|
||||
DictTypeAdd(ctx context.Context, req *v2.DictTypeAddReq) (res *v2.DictTypeAddRes, err error)
|
||||
DictTypeEditPage(ctx context.Context, req *v2.DictTypeEditPageReq) (res *v2.DictTypeEditPageRes, err error)
|
||||
DictTypeEdit(ctx context.Context, req *v2.DictTypeEditReq) (res *v2.DictTypeEditRes, err error)
|
||||
}
|
||||
37
cmd/gf/internal/cmd/testdata/issue/3460/api/hello/v1/req.go
vendored
Normal file
37
cmd/gf/internal/cmd/testdata/issue/3460/api/hello/v1/req.go
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
||||
//
|
||||
// This Source Code Form is subject to the terms of the MIT License.
|
||||
// If a copy of the MIT was not distributed with this file,
|
||||
// You can obtain one at https://github.com/gogf/gf.
|
||||
|
||||
package v1
|
||||
|
||||
import "github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
type DictTypeAddPageReq struct {
|
||||
g.Meta `path:"/dict/type/add" tags:"字典管理" method:"get" summary:"字典类型添加页面"`
|
||||
}
|
||||
|
||||
type DictTypeAddPageRes struct {
|
||||
g.Meta `mime:"text/html" type:"string" example:"<html/>"`
|
||||
}
|
||||
|
||||
type DictTypeAddReq struct {
|
||||
g.Meta `path:"/dict/type/add" tags:"字典管理" method:"post" summary:"添加字典类型"`
|
||||
}
|
||||
type DictTypeAddRes struct {
|
||||
}
|
||||
|
||||
type DictTypeEditPageReq struct {
|
||||
g.Meta `path:"/dict/type/edit" tags:"字典管理" method:"get" summary:"字典类型添加页面"`
|
||||
}
|
||||
|
||||
type DictTypeEditPageRes struct {
|
||||
g.Meta `mime:"text/html" type:"string" example:"<html/>"`
|
||||
}
|
||||
|
||||
type DictTypeEditReq struct {
|
||||
g.Meta `path:"/dict/type/edit" tags:"字典管理" method:"put" summary:"修改字典类型"`
|
||||
}
|
||||
type DictTypeEditRes struct {
|
||||
}
|
||||
37
cmd/gf/internal/cmd/testdata/issue/3460/api/hello/v2/req.go
vendored
Normal file
37
cmd/gf/internal/cmd/testdata/issue/3460/api/hello/v2/req.go
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
||||
//
|
||||
// This Source Code Form is subject to the terms of the MIT License.
|
||||
// If a copy of the MIT was not distributed with this file,
|
||||
// You can obtain one at https://github.com/gogf/gf.
|
||||
|
||||
package v2
|
||||
|
||||
import "github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
type DictTypeAddPageReq struct {
|
||||
g.Meta `path:"/dict/type/add" tags:"字典管理" method:"get" summary:"字典类型添加页面"`
|
||||
}
|
||||
|
||||
type DictTypeAddPageRes struct {
|
||||
g.Meta `mime:"text/html" type:"string" example:"<html/>"`
|
||||
}
|
||||
|
||||
type DictTypeAddReq struct {
|
||||
g.Meta `path:"/dict/type/add" tags:"字典管理" method:"post" summary:"添加字典类型"`
|
||||
}
|
||||
type DictTypeAddRes struct {
|
||||
}
|
||||
|
||||
type DictTypeEditPageReq struct {
|
||||
g.Meta `path:"/dict/type/edit" tags:"字典管理" method:"get" summary:"字典类型添加页面"`
|
||||
}
|
||||
|
||||
type DictTypeEditPageRes struct {
|
||||
g.Meta `mime:"text/html" type:"string" example:"<html/>"`
|
||||
}
|
||||
|
||||
type DictTypeEditReq struct {
|
||||
g.Meta `path:"/dict/type/edit" tags:"字典管理" method:"put" summary:"修改字典类型"`
|
||||
}
|
||||
type DictTypeEditRes struct {
|
||||
}
|
||||
5
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello.go
vendored
Normal file
5
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello.go
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package hello
|
||||
21
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello_new.go
vendored
Normal file
21
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello_new.go
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package hello
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/issue/3460/api/hello"
|
||||
)
|
||||
|
||||
type ControllerV1 struct{}
|
||||
|
||||
func NewV1() hello.IHelloV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
|
||||
type ControllerV2 struct{}
|
||||
|
||||
func NewV2() hello.IHelloV2 {
|
||||
return &ControllerV2{}
|
||||
}
|
||||
23
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello_v1_req.go
vendored
Normal file
23
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello_v1_req.go
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
package hello
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/issue/3460/api/hello/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) DictTypeAddPage(ctx context.Context, req *v1.DictTypeAddPageReq) (res *v1.DictTypeAddPageRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
func (c *ControllerV1) DictTypeAdd(ctx context.Context, req *v1.DictTypeAddReq) (res *v1.DictTypeAddRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
func (c *ControllerV1) DictTypeEditPage(ctx context.Context, req *v1.DictTypeEditPageReq) (res *v1.DictTypeEditPageRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
func (c *ControllerV1) DictTypeEdit(ctx context.Context, req *v1.DictTypeEditReq) (res *v1.DictTypeEditRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
23
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello_v2_req.go
vendored
Normal file
23
cmd/gf/internal/cmd/testdata/issue/3460/controller/hello/hello_v2_req.go
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
package hello
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"github.com/gogf/gf/cmd/gf/v2/internal/cmd/testdata/issue/3460/api/hello/v2"
|
||||
)
|
||||
|
||||
func (c *ControllerV2) DictTypeAddPage(ctx context.Context, req *v2.DictTypeAddPageReq) (res *v2.DictTypeAddPageRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
func (c *ControllerV2) DictTypeAdd(ctx context.Context, req *v2.DictTypeAddReq) (res *v2.DictTypeAddRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
func (c *ControllerV2) DictTypeEditPage(ctx context.Context, req *v2.DictTypeEditPageReq) (res *v2.DictTypeEditPageRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
func (c *ControllerV2) DictTypeEdit(ctx context.Context, req *v2.DictTypeEditReq) (res *v2.DictTypeEditRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
@ -51,6 +51,20 @@ func (c *{CtrlName}) {MethodName}(ctx context.Context, req *{Version}.{MethodNam
|
||||
}
|
||||
`
|
||||
|
||||
const TemplateGenCtrlControllerHeader = `
|
||||
package {Module}
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"{ImportPath}"
|
||||
)
|
||||
|
||||
`
|
||||
|
||||
const TemplateGenCtrlControllerMethodFuncMerge = `
|
||||
|
||||
func (c *{CtrlName}) {MethodName}(ctx context.Context, req *{Version}.{MethodName}Req) (res *{Version}.{MethodName}Res, err error) {
|
||||
|
||||
Reference in New Issue
Block a user