63 lines
1.0 KiB
Go
63 lines
1.0 KiB
Go
![]() |
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
|
||
|
}
|