| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package orm
- import (
- "bytes"
- "fmt"
- "gitea.ckfah.com/go-script/logger"
- "go/format"
- "sync"
- "text/template"
- )
- const (
- defaultDtoPackageName = "dto"
- )
- type DtoMeta struct {
- TableName string
- TableField []FieldMeta
- }
- type DtoMetas struct {
- sync.Mutex
- packageName string
- dtos []DtoMeta
- }
- func NewDtoMeta(packageName string) *DtoMetas {
- if packageName == "" {
- packageName = defaultDtoPackageName
- }
- return &DtoMetas{
- packageName: packageName,
- dtos: []DtoMeta{},
- }
- }
- func (this *DtoMetas) Append(meta *ModelMeta) {
- this.Lock()
- defer this.Unlock()
- dtoMeta := DtoMeta{
- TableName: meta.TableName,
- TableField: meta.Fields,
- }
- this.dtos = append(this.dtos, dtoMeta)
- }
- func (this *DtoMetas) Run(tmpl *template.Template) ([]byte, error) {
- var buffer = &bytes.Buffer{}
- buffer.WriteString(fmt.Sprintf(`
- package %s
- `, this.packageName))
- for _, elem := range this.dtos {
- err := tmpl.Execute(buffer, &elem)
- if err != nil {
- return nil, err
- }
- }
- source, err := format.Source(buffer.Bytes())
- if err != nil {
- logger.ErrorF("[Run] err,table=%v,err=%v,body=\n%s\n", this.packageName, err, buffer.Bytes())
- return buffer.Bytes(), nil
- }
- return source, nil
- }
|