gitee.com/h79/goutils@v1.22.10/dao/dao_test.go (about) 1 package dao 2 3 import ( 4 "gitee.com/h79/goutils/dao/config" 5 "gitee.com/h79/goutils/dao/db" 6 "gitee.com/h79/goutils/dao/option" 7 "gitee.com/h79/goutils/dao/redis" 8 "gitee.com/h79/goutils/dao/wrapper" 9 "strings" 10 "testing" 11 "time" 12 ) 13 14 // Storage [...] 15 type Storage struct { 16 StorageID int `gorm:"primaryKey;column:STORAGE_ID" json:"-"` 17 StorageName string `gorm:"column:STORAGE_NAME" json:"sTORAGENAME"` 18 Remark string `gorm:"column:REMARK" json:"rEMARK"` 19 GroupLimit string `gorm:"column:GROUP_LIMIT" json:"gROUPLIMIT"` 20 CreateUserID int `gorm:"column:CREATE_USER_ID" json:"cREATEUSERId"` 21 CreateDate time.Time `gorm:"column:CREATE_DATE" json:"cREATEDATE"` 22 } 23 24 // TableName get sql table name.获取数据库表名 25 func (m *Storage) TableName() string { 26 return "storage" 27 } 28 29 func TestCondition(t *testing.T) { 30 31 var builder = strings.Builder{} 32 33 wrapper.SqlColumn(&builder, "`bbbb`.`xxx`") 34 wrapper.AddQuoted(&builder, "`xxx") 35 t.Log(builder.String()) 36 /* conds := make([]interface{}, 0) 37 conds = append(conds, "active = ?") 38 conds = append(conds, 1) 39 conds = append(conds, " and ") 40 conds = append(conds, "(name,alb,lddd) IN") 41 conds = append(conds, "email LIKE ?") 42 conds = append(conds, "%jinzhu%") 43 44 t.Log(conds)*/ 45 46 Con := wrapper.Condition{} 47 Con.And("name", wrapper.In, []interface{}{1, 3, 4}) 48 Con.Or("name", wrapper.Like, "\"3333%") 49 Con.Or("name", wrapper.Like, "'3333") 50 Con.Or("name", wrapper.Like, "\\3333") 51 Con.Between("create_at", 111, 222) 52 53 t.Logf("In: %v\n%v", Con.Cond(), Con.Value()) 54 55 t.Logf("Sql= %s", Con.Build(option.WithFullSQL())) 56 } 57 58 func TestSelect(t *testing.T) { 59 sel := wrapper.Select{} 60 sel.Add("xxxx") 61 csel := sel.Clone() 62 csel.Add("yyyy") 63 csel.Add("zzzz") 64 t.Logf("sel: %#v", sel) 65 t.Logf("clone: %#v", csel) 66 67 csel.Delete("zzzz") 68 t.Logf("clone1: %#v", csel) 69 } 70 71 func TestName(t *testing.T) { 72 } 73 func TestSQL(t *testing.T) { 74 75 col := wrapper.Column{ 76 Column: "xxxx", 77 } 78 col.WithFunc(wrapper.KSQLMax).AS("bbbb") 79 t.Logf("col: %s", col.Build(nil)) 80 81 sel := wrapper.Select{} 82 sel.Add("xxxx.yyy") 83 sel.Add("bbb") 84 sel.Add("max(xxx)") 85 // 86 SQL := wrapper.NewSQL(&wrapper.From{From: "tb_xxx"}, option.WithFullSQL(), option.WithSubQuerySQL("")) 87 SQL.WithSelector(&sel) 88 // 89 Con := wrapper.Condition{} 90 Con.And("name", wrapper.In, []interface{}{1, 3, 4}) 91 Con.Or("name", wrapper.Like, "\"3333") 92 Con.Or("name", wrapper.Like, "%'3333") 93 Con.Between("create_at", 111, 222) 94 95 by := wrapper.OrderBy{ 96 {Column: "create_at", Desc: true}, 97 {Column: "update_at", Desc: true}, 98 } 99 SQL.WithOrderBy(&by) 100 SQL.WithLimit(&wrapper.Limit{Limit: 50, Offset: 20}) 101 SQL.WithWhere(&Con) 102 103 group := wrapper.GroupBy{{Column: "create_at"}} 104 SQL.WithGroupBy(&group) 105 106 SQL.WithJoin(&wrapper.Join{Type: "", Table: "TB_BBBB", ON: "XXX=YYYY"}) 107 // 108 sql := SQL.Build(option.SqlColumnConvert(func(col string) string { 109 return col 110 })) 111 t.Logf("sql1: %#v", sql) 112 // 113 //SQL1 := wrapper.NewSQL(SQL.AsChild("A")) 114 //SQL1.WithSelector(&sel) 115 //groupBy := wrapper.GroupBy{ 116 // {Column: "create_at"}, 117 // {Column: "update_at"}, 118 //} 119 //SQL1.WithGroupBy(&groupBy) 120 121 //t.Logf("sql2: %#v", SQL1.Build()) 122 123 SQL2 := wrapper.NewSQL(&wrapper.From{From: "tb_xxx"}) 124 SQL2.WithSelector(&sel) 125 Con2 := wrapper.Condition{} 126 Con2.Or("name", wrapper.Like, "\\3333") 127 wrapper.AND(&Con2, "XXX", 2, []int{11, 12, 13}) 128 Con2.Or("name", wrapper.NotIn, SQL.AsSubQuery("")) 129 Con2.Or("", wrapper.Exists, SQL) 130 SQL2.WithOrderBy(&by) 131 SQL2.WithWhere(&Con2) 132 t.Logf("sql3: %#v", SQL2.Build()) 133 } 134 135 func TestConnectDB(t *testing.T) { 136 137 cfg := config.Sql{ 138 Master: config.Database{ 139 Host: "192.168.2.233", 140 Port: 3306, 141 User: "5", 142 Pwd: "5", 143 DriverType: "mysql", 144 Name: "dm", 145 }, 146 } 147 148 adapter, err := db.NewAdapter(&cfg) 149 if err != nil { 150 t.Error(err) 151 return 152 } 153 t.Log("连接数据库OK") 154 155 page := wrapper.NewPage(adapter.Db(), 500). 156 WithSize(10) 157 158 ss := make([]Storage, 0) 159 page.WithResult(&ss) 160 err = page.FindPage(Storage{}, nil, nil) 161 if err != nil { 162 t.Error(err) 163 return 164 } 165 t.Logf("Total: %v", page.Total) 166 t.Logf("Result 1: %v", page.Results) 167 168 /*base := &wrapper.Base{ 169 DB: adapter.Db(), 170 }*/ 171 Cond0 := wrapper.Condition{} 172 Cond0.Eq("STORAGE_ID", 13) 173 174 Sel0 := wrapper.Select{} 175 Sel0.Add("REMARK").Add("STORAGE_NAME") 176 st := Storage{} 177 page.WithResult(&st) 178 err = page.Find(Storage{}, &Cond0, &Sel0) 179 180 t.Logf("Result 2: %v", page.Results) 181 182 Cond := wrapper.Condition{} 183 Cond.Like("STORAGE_NAME", "%仓%") 184 Cond1 := wrapper.Condition{} 185 Cond1.Eq("REMARK", "备注") 186 187 t.Logf("Cond: %s", Cond.Cond()) 188 t.Logf("Values: %v", Cond.Value()) 189 st2 := make([]Storage, 0) 190 page.DB.Model(Storage{}).Where(Cond.Cond(), Cond.Value()...).Or(Cond1.Cond(), Cond1.Value()...).Find(&st2) 191 t.Logf("Result 2-1: %v", st2) 192 193 // 194 cs := Storage{} 195 er := page.Create(&cs, func(q *option.Query) { 196 q.Q["STORAGE_NAME"] = "huqiuyun" 197 q.Q["REMARK"] = "huqiuyun" 198 }) 199 t.Logf("创建:+%v", er) 200 201 Cond2 := wrapper.Condition{} 202 Cond2.Eq("STORAGE_ID", 16) 203 err = page.Delete(&Storage{}, &Cond2) 204 t.Logf("Delete :%v", err) 205 206 Cond3 := &wrapper.Condition{} 207 sss := make([]Storage, 0) 208 page.WithResult(&sss) 209 _ = page.Find(Storage{}, Cond3.Eq("CREATE_USER_ID", 63), nil) 210 211 t.Logf("Result 3: %v", page.Results) 212 213 } 214 215 func TestConnectRedis(t *testing.T) { 216 cfg := []config.Redis{{ 217 Name: "dm", 218 Master: config.RedisConfig{ 219 Host: []string{"127.0.0.1:5882"}, 220 Pwd: "Dmzg2017", 221 DB: 1, 222 }, 223 }} 224 _, err := redis.NewRedis(cfg) 225 if err != nil { 226 t.Error(err) 227 return 228 } 229 t.Log("连接REDIS成功") 230 } 231 232 func TestSwap(t *testing.T) { 233 cateId := []int32{2, 23} 234 cond := wrapper.Condition{} 235 cond.AndLt("ss", 1) 236 if len(cateId) == 1 { 237 cond.AndEq("ss", cateId[0]) 238 } else if len(cateId) > 1 { 239 in := wrapper.Condition{} 240 in.Compose("ss", wrapper.In, cateId) 241 cond.From(&in, false, wrapper.And) 242 } 243 t.Log(cond.Query()) 244 }