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  }