engineplus.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package xorm
  2. import (
  3. "encoding/json"
  4. "gopkg.in/flosch/pongo2.v3"
  5. )
  6. func (engine *Engine) SqlMapClient(sqlTagName string, args ...interface{}) *Session {
  7. session := engine.NewSession()
  8. session.IsAutoClose = true
  9. return session.Sql(engine.SqlMap.Sql[sqlTagName], args...)
  10. }
  11. func (engine *Engine) SqlTemplateClient(sqlTagName string, args ...interface{}) *Session {
  12. session := engine.NewSession()
  13. session.IsAutoClose = true
  14. if engine.SqlTemplate.Template[sqlTagName] == nil {
  15. if len(args) == 0 {
  16. return session.Sql("")
  17. } else {
  18. map1 := args[0].(map[string]interface{})
  19. return session.Sql("", &map1)
  20. }
  21. }
  22. if len(args) == 0 {
  23. parmap := &pongo2.Context{"1": 1}
  24. sql, err := engine.SqlTemplate.Template[sqlTagName].Execute(*parmap)
  25. if err != nil {
  26. engine.logger.Error(err)
  27. }
  28. return session.Sql(sql)
  29. } else {
  30. map1 := args[0].(map[string]interface{})
  31. sql, err := engine.SqlTemplate.Template[sqlTagName].Execute(map1)
  32. if err != nil {
  33. engine.logger.Error(err)
  34. }
  35. return session.Sql(sql, &map1)
  36. }
  37. }
  38. // Get retrieve one record from table, bean's non-empty fields
  39. // are conditions
  40. func (engine *Engine) GetFirst(bean interface{}) ResultBean {
  41. session := engine.NewSession()
  42. defer session.Close()
  43. return session.GetFirst(bean)
  44. }
  45. func JSONString(v interface{}, IndentJSON bool) (string, error) {
  46. var result []byte
  47. var err error
  48. if IndentJSON {
  49. result, err = json.MarshalIndent(v, "", " ")
  50. } else {
  51. result, err = json.Marshal(v)
  52. }
  53. if err != nil {
  54. return "", err
  55. }
  56. if string(result) == "null" {
  57. return "", nil
  58. }
  59. return string(result), nil
  60. }