model_gen.go 1.6 KB

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