Simple and Powerful ORM for Go, support mysql,postgres,tidb,sqlite3,mssql,oracle https://xorm.io
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

70 строки
1.3 KiB

  1. // Copyright 2017 The Xorm Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package xorm
  5. import (
  6. "testing"
  7. "github.com/go-xorm/core"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestSetExpr(t *testing.T) {
  11. assert.NoError(t, prepareEngine())
  12. type UserExpr struct {
  13. Id int64
  14. Show bool
  15. }
  16. assert.NoError(t, testEngine.Sync2(new(UserExpr)))
  17. cnt, err := testEngine.Insert(&UserExpr{
  18. Show: true,
  19. })
  20. assert.NoError(t, err)
  21. assert.EqualValues(t, 1, cnt)
  22. var not = "NOT"
  23. if testEngine.dialect.DBType() == core.MSSQL {
  24. not = "~"
  25. }
  26. cnt, err = testEngine.SetExpr("show", not+" `show`").ID(1).Update(new(UserExpr))
  27. assert.NoError(t, err)
  28. assert.EqualValues(t, 1, cnt)
  29. }
  30. func TestCols(t *testing.T) {
  31. assert.NoError(t, prepareEngine())
  32. type ColsTable struct {
  33. Id int64
  34. Col1 string
  35. Col2 string
  36. }
  37. assertSync(t, new(ColsTable))
  38. _, err := testEngine.Insert(&ColsTable{
  39. Col1: "1",
  40. Col2: "2",
  41. })
  42. assert.NoError(t, err)
  43. sess := testEngine.ID(1)
  44. _, err = sess.Cols("col1").Cols("col2").Update(&ColsTable{
  45. Col1: "",
  46. Col2: "",
  47. })
  48. assert.NoError(t, err)
  49. var tb ColsTable
  50. has, err := testEngine.ID(1).Get(&tb)
  51. assert.NoError(t, err)
  52. assert.True(t, has)
  53. assert.EqualValues(t, "", tb.Col1)
  54. assert.EqualValues(t, "", tb.Col2)
  55. }