Skip to content

Commit

Permalink
Merge pull request #39 from chenqinghe/master
Browse files Browse the repository at this point in the history
feature: support custom model templates
  • Loading branch information
hantmac committed May 20, 2021
2 parents 58009f3 + b442fe0 commit 260814d
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 2 deletions.
6 changes: 6 additions & 0 deletions bases/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ func init() {
curdFuncTemplate, _ = modelTemplate.New("curdFunc").Parse(curdFuncTpl)
}

func SetModelTemplate(tmpl *template.Template) {
if tmpl != nil {
modelTemplate = tmpl
}
}

var modelTpl = `
package {{ .PackageName }}
Expand Down
15 changes: 13 additions & 2 deletions cmd/fuckdb/cmd/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"embed"
"fmt"
"fuckdb/bases"
"fuckdb/config"
"fuckdb/routers"
"fuckdb/routers/middleware"
Expand All @@ -14,6 +15,7 @@ import (
"os/exec"
"os/signal"
"runtime"
"text/template"
"time"

"github.com/gin-gonic/gin"
Expand All @@ -33,6 +35,15 @@ var serverCmd = &cobra.Command{
}
logrus.Infoln("config init success")

tplFile := viper.GetString("customTmpl")
if tplFile != "" {
tmpl, err := template.ParseFiles(tplFile)
if err != nil {
logrus.Fatalln("parse template files error:", err)
}
bases.SetModelTemplate(tmpl)
}

var host = viper.GetString("server.host")
var port = viper.GetString("server.port")

Expand Down Expand Up @@ -119,7 +130,7 @@ func startHTTPServer(host, port string) {
func openBrowser(url string) {
switch runtime.GOOS {
case "darwin":
openFreeBSDBrowser(url)
openDarwinBrowser(url)

case "linux":
openLinuxBrowser(url)
Expand All @@ -132,7 +143,7 @@ func openBrowser(url string) {

}

func openFreeBSDBrowser(url string) {
func openDarwinBrowser(url string) {
openCmd := exec.Command("open", url)
if err := openCmd.Run(); err != nil {
logrus.Errorln("open browser error, please open browser manually:", url)
Expand Down
2 changes: 2 additions & 0 deletions config/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@ server:
host: 127.0.0.1
port: 8000

customTmpl: example.tpl

genFilePath: ./
56 changes: 56 additions & 0 deletions config/example.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package {{ .PackageName }}

type {{ .ModelName }} struct {
{{ .Fields }}
}

{{ if .Option.WithGormAnnotation }}
// TableName sets the insert table name for this struct type
func (model *{{ .ModelName }})TableName() string {
return "{{ .Table.Name }}"
}
{{ end }}

{{ if .Option.WithGormAnnotation }}
func Add{{.ModelName}}(m *{{.ModelName}}) error {
return db.Save(m).Error
}

func Delete{{.ModelName}}ByID(id int) (bool, error) {
if err := db.Delete(&{{.ModelName}}{}, id).Error; err != nil {
return false, err
}
return db.RowsAffected > 0, nil
}

func Delete{{.ModelName}}(condition string, args ...interface{}) (int64, error) {
if err := db.Where(condition, args...).Delete(&{{.ModelName}}{}).Error; err != nil {
return 0, err
}
return db.RowsAffected, nil
}

func Update{{.ModelName}}(m *{{.ModelName}}) error {
return db.Save(m).Error
}

func Get{{.ModelName}}ByID(id int) (*{{.ModelName}}, error) {
var m {{.ModelName}}
if err := db.First(&m, id).Error; err != nil {
return nil, err
}
return &m, nil
}

func Get{{.ModelName}}s(condition string, args ...interface{}) ([]*{{.ModelName}}, error) {
res := make([]*{{.ModelName}}, 0)
if err := db.Where(condition, args...).Find(&res).Error; err != nil {
return nil, err
}
return res, nil
}

{{ end }}



0 comments on commit 260814d

Please sign in to comment.