Files

63 lines
1.0 KiB
Go
Raw Normal View History

2021-11-02 09:43:19 +08:00
package model
import (
"ArmedPolice/utils"
"bytes"
"fmt"
"go/format"
"text/template"
)
const ModelTemplate = `package {{.Name}}
type {{.StrutName}} struct {
Model
ModelDeleted
ModelAt
}
func (m *{{.StrutName}}) TableName() string {
return "{{.TableName}}"
}
func New{{.StrutName}}() *{{.StrutName}} {
return &{{.StrutName}}{}
}`
type ModelFile struct {
// Name is the plugin name. Snack style.
Name string
// StrutName is the struct name.
StrutName string
// TableName is the model table name.
TableName string
}
func (v *ModelFile) Execute(file, tmplName, tmpl string) error {
fmt.Println(file)
f, err := utils.Open(file)
if err != nil {
return err
}
defer f.Close()
temp := new(template.Template)
if temp, err = template.New(tmplName).Parse(tmpl); err != nil {
return err
}
buf := new(bytes.Buffer)
if err = temp.Execute(buf, v); err != nil {
return err
}
out := make([]byte, 0)
if out, err = format.Source(buf.Bytes()); err != nil {
return err
}
_, err = f.Write(out)
return err
}