Skip to content

Commit

Permalink
Private Project Generator.
Browse files Browse the repository at this point in the history
  • Loading branch information
Kujtim committed Nov 16, 2017
1 parent ca08d17 commit 24ef684
Show file tree
Hide file tree
Showing 6 changed files with 71 additions and 36 deletions.
8 changes: 6 additions & 2 deletions cmd/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@ var modelCmd = &cobra.Command{
Short: "Generate model",
Run: func(cmd *cobra.Command, args []string) {
if len(args) == 0 {
logrus.Error("You must provide a name for the service")
logrus.Error("You must provide a name for the model")
return
}
g := generator.NewGenerateModel(args[0], viper.GetString("g_md_service"))
if viper.GetString("g_md_service") == "" {
logrus.Error("You must provide the service name")
return
}
g := generator.NewGenerateModel(viper.GetString("g_md_service"), args[0])
if err := g.Generate(); err != nil {
logrus.Error(err)
}
Expand Down
8 changes: 4 additions & 4 deletions generator/add_transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ func (g *generateHTTPTransport) Generate() (err error) {
[]jen.Code{},
"",
jen.Id("e").Op(":=").Qual(
"github.com/kujtimiihoxha/shqip-core/io",
"github.com/kujtimiihoxha/shqip-for-u/core/io",
"BaseResponse",
).Values(),
jen.Id("e").Dot("Failed").Call(jen.Id("err")),
Expand All @@ -409,7 +409,7 @@ func (g *generateHTTPTransport) Generate() (err error) {
jen.If(
jen.List(jen.Id("h"), jen.Id("k")).Op(":=").Id("response").Id(".").Call(
jen.Qual(
"github.com/kujtimiihoxha/shqip-core/io",
"github.com/kujtimiihoxha/shqip-for-u/core/io",
"Failure",
),
).Op(";").Id("k").Block(
Expand Down Expand Up @@ -579,11 +579,11 @@ func (g *generateHTTPTransportBase) Generate() (err error) {
[]jen.Code{},
"",
jen.Id("e").Op(":=").Qual(
"github.com/kujtimiihoxha/shqip-core/io",
"github.com/kujtimiihoxha/shqip-for-u/core/io",
"BaseResponse",
).Values(),
jen.Id("e").Dot("Failed").Call(
jen.Qual("github.com/kujtimiihoxha/shqip-core/errors", "NewNotFoundError").Call(
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/errors", "NewNotFoundError").Call(
jen.Id("r.URL.String()"),
),
),
Expand Down
2 changes: 1 addition & 1 deletion generator/generate_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/kujtimiihoxha/shqip-core/config"
"github.com/kujtimiihoxha/shqip-for-u/core/config"
)
var session *gorm.DB
Expand Down
60 changes: 53 additions & 7 deletions generator/generate_model.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func NewGenerateModel(name string, model string) Gen {
destPath: fmt.Sprintf(viper.GetString("gk_model_path_format"), utils.ToLowerSnakeCase(name)),
model: model,
}
t.filePath = path.Join(t.destPath, utils.ToLowerFirstCamelCase(model)+".go")
t.filePath = path.Join(t.destPath, utils.ToLowerSnakeCase(model)+".go")
t.srcFile = jen.NewFilePath(t.destPath)
t.InitPg()
t.fs = fs.Get()
Expand All @@ -45,7 +45,7 @@ func (g *generateModel) Generate() (err error) {
}
g.code.appendStruct(
utils.ToUpperFirst(utils.ToCamelCase(g.model)),
jen.Qual("github.com/kujtimiihoxha/shqip-core/db", "BaseModel"),
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/db", "BaseModel"),
)
g.code.appendStruct(
utils.ToUpperFirst(utils.ToCamelCase(g.model)+"Controller"),
Expand All @@ -55,7 +55,53 @@ func (g *generateModel) Generate() (err error) {
if err != nil {
return err
}
m := utils.ToLowerFirstCamelCase(string(g.model[0]))
m := utils.ToLowerFirstCamelCase(g.model)
g.code.appendFunction(
"New"+utils.ToUpperFirst(utils.ToCamelCase(g.model)+"Controller"),
nil,
[]jen.Code{
jen.Id(m).Id("*").Id(utils.ToCamelCase(g.model)),
},
[]jen.Code{
jen.Id(utils.ToCamelCase(g.model) + "Controller"),
},
"",
jen.Return(
jen.Id(utils.ToCamelCase(g.model)+"Controller").Values(
jen.Dict{
jen.Id(m): jen.Id(m),
},
),
),
)
g.code.NewLine()
g.code.appendFunction(
"Get",
jen.Id(m).Id("*").Id(utils.ToUpperFirst(utils.ToCamelCase(g.model)+"Controller")),
[]jen.Code{
jen.Id("list").Id("*").Id("[]" + utils.ToCamelCase(g.model)),
jen.Id("limit").Int(),
jen.Id("skip").Int(),
},
[]jen.Code{
jen.Error(),
},
"",
jen.Err().Op(":=").Qual(imp, "Session").Call().Dot("Limit").Call(
jen.Id("limit"),
).Dot("Offset").Call(jen.Id("skip")).Dot("Find").Call(
jen.Id("list"),
).Dot("Error"),
jen.If(jen.Err().Op("!=").Nil()).Block(
jen.Return(
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/errors", "NewDBFilterError").Call(
jen.Id("err"),
),
),
),
jen.Return(jen.Nil()),
)
g.code.NewLine()
g.code.appendFunction(
"Insert",
jen.Id(m).Id("*").Id(utils.ToUpperFirst(utils.ToCamelCase(g.model)+"Controller")),
Expand All @@ -69,7 +115,7 @@ func (g *generateModel) Generate() (err error) {
).Dot("Error"),
jen.If(jen.Err().Op("!=").Nil()).Block(
jen.Return(
jen.Qual("github.com/kujtimiihoxha/shqip-core/errors", "NewDBCreateError").Call(
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/errors", "NewDBCreateError").Call(
jen.Id("err"),
),
),
Expand All @@ -93,7 +139,7 @@ func (g *generateModel) Generate() (err error) {
).Dot("Error"),
jen.If(jen.Err().Op("!=").Nil()).Block(
jen.Return(
jen.Qual("github.com/kujtimiihoxha/shqip-core/errors", "NewDBGetByIDError").Call(
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/errors", "NewDBGetByIDError").Call(
jen.Id("id"),
jen.Id("err"),
),
Expand All @@ -116,7 +162,7 @@ func (g *generateModel) Generate() (err error) {
).Dot("Error"),
jen.If(jen.Err().Op("!=").Nil()).Block(
jen.Return(
jen.Qual("github.com/kujtimiihoxha/shqip-core/errors", "NewDBUpdateError").Call(
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/errors", "NewDBUpdateError").Call(
jen.Id("err"),
),
),
Expand All @@ -137,7 +183,7 @@ func (g *generateModel) Generate() (err error) {
).Dot("Error"),
jen.If(jen.Err().Op("!=").Nil()).Block(
jen.Return(
jen.Qual("github.com/kujtimiihoxha/shqip-core/errors", "NewDBDeleteError").Call(
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/errors", "NewDBDeleteError").Call(
jen.Id("err"),
),
),
Expand Down
27 changes: 6 additions & 21 deletions generator/generate_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,7 @@ func (g *generateServiceEndpoints) generateMethodEndpoint() (err error) {
reqFields := []jen.Code{}
// For the response struct
resFields := []jen.Code{
jen.Qual("github.com/kujtimiihoxha/shqip-core/io", "BaseResponse"),
jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/io", "BaseResponse"),
}

mCallParam := []jen.Code{}
Expand Down Expand Up @@ -728,13 +728,10 @@ func (g *generateServiceEndpoints) generateMethodEndpoint() (err error) {
mCallParam = append(mCallParam, jen.Id("req").Dot(utils.ToCamelCase(p.Name)))

}
methodHasError := false
errName := ""

en := ""
for _, p := range m.Results {
if p.Type == "error" {
methodHasError = true
errName = utils.ToCamelCase(p.Name)
en = p.Name
retList = append(retList, jen.Id(p.Name))
continue
Expand Down Expand Up @@ -763,10 +760,10 @@ func (g *generateServiceEndpoints) generateMethodEndpoint() (err error) {
retList = append(retList, jen.Id(p.Name))
}
respParam[jen.Id("BaseResponse")] = jen.Qual(
"github.com/kujtimiihoxha/shqip-core/io",
"github.com/kujtimiihoxha/shqip-for-u/core/io",
"BaseResponse",
).Values(jen.Dict{
jen.Line().Id("WithErr"): jen.Qual("github.com/kujtimiihoxha/shqip-core/io", "WithErr").Values(
jen.Line().Id("WithErr"): jen.Qual("github.com/kujtimiihoxha/shqip-for-u/core/io", "WithErr").Values(
jen.Dict{
jen.Line().Id("Err"): jen.Id(en).Id(",").Line(),
},
Expand All @@ -791,7 +788,7 @@ func (g *generateServiceEndpoints) generateMethodEndpoint() (err error) {
if v.Name == "Make"+m.Name+"Endpoint" {
makeMethdExists = true
}
if v.Name == "GetError" && v.Struct.Type == m.Name+"Response" {
if v.Name == "GetErr" && v.Struct.Type == m.Name+"Response" {
failedFound = true
}
if failedFound && makeMethdExists {
Expand Down Expand Up @@ -823,7 +820,7 @@ func (g *generateServiceEndpoints) generateMethodEndpoint() (err error) {
jen.Id(m.Name + "Request"),
),
jen.List(retList...).Op(":=").Id("s").Dot(m.Name).Call(mCallParam...),
jen.Return(jen.Id(m.Name+"Response").Values(respParam), jen.Nil()),
jen.Return(jen.Id("&"+m.Name+"Response").Values(respParam), jen.Nil()),
}
if len(mCallParam) == 1 {
bd = bd[1:]
Expand Down Expand Up @@ -858,18 +855,6 @@ func (g *generateServiceEndpoints) generateMethodEndpoint() (err error) {
)
g.code.NewLine()
}
if !failedFound && methodHasError {
g.code.Raw().Comment("Failed implements Failer.").Line()
g.code.appendFunction(
"GetError",
jen.Id("r").Id(m.Name+"Response"),
[]jen.Code{},
[]jen.Code{},
"error",
jen.Return(jen.Id("r").Dot(errName)),
)
g.code.NewLine()
}
}
return
}
Expand Down
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func setDefaults() {
viper.SetDefault("gk_grpc_path_format", path.Join("%s", "pkg", "grpc"))
viper.SetDefault("gk_grpc_pb_path_format", path.Join("%s", "pkg", "grpc", "pb"))
viper.SetDefault("gk_db_path_format", path.Join("%s", "pkg", "db"))
viper.SetDefault("gk_model_path_format", path.Join("%s", "pkg", "db", "model"))
viper.SetDefault("gk_model_path_format", path.Join("%s", "pkg", "db", "models"))

viper.SetDefault("gk_service_file_name", "service.go")
viper.SetDefault("gk_service_middleware_file_name", "middleware.go")
Expand Down

0 comments on commit 24ef684

Please sign in to comment.