model_gen.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package apigen
  2. import "git.qianqiusoft.com/qianqiusoft/light-apiengine-client/code_gen/utils"
  3. const modelTemplate = `
  4. package models
  5. import (
  6. {{if ParamsContainDT .data.ColumnList}}sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"{{- end}}
  7. //__import_packages__
  8. )
  9. {{$structName := CamelizeStr .data.Name true}}
  10. //{{.data.Desc}}
  11. type {{$structName}} struct {
  12. {{range .data.ColumnList -}}
  13. //{{.Caption}}
  14. {{CamelizeStr .Name true}} {{FixType .Type}} {{Backquote}}{{Xorm . | Unescaped}}json:"{{.Name}}"{{Backquote}}
  15. {{end}}
  16. }
  17. func (t *{{$structName}}) TableName() string {
  18. return "{{.data.Name}}"
  19. }
  20. func init() {
  21. AddTableName("{{.data.Name}}")
  22. RegisterModel(new({{$structName}}))
  23. }
  24. `
  25. func GenModel(templateData interface{}, params map[string]interface{}) ([]byte, error) {
  26. return utils.GenTemplate(modelTemplate, templateData, params)
  27. }
  28. func GenModelGo(templateData interface{}, params map[string]interface{}) ([]byte, error) {
  29. out := utils.Str2bytes(ModelGo)
  30. return out, nil
  31. }
  32. const ModelGo = `
  33. package models
  34. import (
  35. "fmt"
  36. "git.qianqiusoft.com/qianqiusoft/light-apiengine/config"
  37. "github.com/xormplus/xorm"
  38. "sync"
  39. )
  40. var beans []interface{}
  41. var ModelNameList []string
  42. var beansLock sync.Mutex
  43. func RegisterModel(models ...interface{}) {
  44. beansLock.Lock()
  45. defer beansLock.Unlock()
  46. for _, model := range models {
  47. beans = append(beans, model)
  48. }
  49. }
  50. func AddTableName(tableName string) {
  51. beansLock.Lock()
  52. defer beansLock.Unlock()
  53. ModelNameList = append(ModelNameList, tableName)
  54. }
  55. func SyncDb(db *xorm.Engine) {
  56. if !config.AppConfig.SyncDb {
  57. return
  58. }
  59. err := db.Sync2(beans...)
  60. if err != nil {
  61. fmt.Println(err)
  62. }
  63. }
  64. `