Categorygithub.com/lontten/ldb
repositorypackage
0.0.0-20250215065420-c47534f6de92
Repository: https://github.com/lontten/ldb.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

ldb

init ldb


	path := "./log/go.log"
	writer, _ := rotatelogs.New(
		path+".%Y-%m-%d",
		rotatelogs.WithLinkName(path),
		rotatelogs.WithMaxAge(time.Duration(365*24)*time.Hour),
		rotatelogs.WithRotationTime(time.Duration(24)*time.Hour),
	)
	newLogger := log.New(writer, "\r\n", log.LstdFlags)

	var dbName = pg.DbName

	pgConf := ldb.PgConf{
		Host:     pg.Ip,
		Port:     pg.Port,
		DbName:   pg.dbName,
		User:     pg.User,
		Password: pg.Pwd,
		Other:    "sslmode=disable TimeZone=Asia/Shanghai",
	}
	poolConf := ldb.PoolConf{
		MaxIdleCount: 10,
		MaxOpen:      100,
		MaxLifetime:  time.Hour,
		Logger:       newLogger,
	}
	ormConf := ldb.OrmConf{
		TableNamePrefix: "t_",
		PrimaryKeyNames: []string{"id"},
	}

	db := ldb.MustConnect(&pgConf, &poolConf).OrmConf(&ormConf)

type User struct {
	ID   types.UUID `json:"id"  tableName:"public.t_user"`
	Name string     `json:"info"`
	Age  int        `json:"age"`
}

type NullUser struct {
	ID   *types.UUID `json:"id"  tableName:"public.t_user"`
	Name *string     `json:"info"`
	Age  *int        `json:"age"`
}

create

	user := NullUser{
		ID:   types.NewV4P(),
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}
	// create 是引用,会返回id
	num, err := db.Insert(&user)
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	//return id
	fmt.Println(user.ID)
	
	//-----------------------

	user := NullUser{
		ID:   types.NewV4P(),
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}
	
	// create 不是引用,不会返回id
	num, err := db.Insert(user)
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	// nil
	fmt.Println(user.ID)

###create or update

	user := NullUser{
		ID:   types.NewV4P(),
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}
	
	// 创建或更新,根据主键
	num, err := db.InsertOrUpdate(&user).ByPrimaryKey()
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	//------------------
	
	user := NullUser{
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}
	
	// 创建或更新,根据 name,age组合的唯一索引;mysql不支持此功能
	num, err := db.InsertOrUpdate(&user).ByUnique([]string{"name","age"})
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)

update

	user := NullUser{
		ID:   types.NewV4P(),
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}
	
	//根据主键更新
	num, err := db.Update(&user).ByPrimaryKey()
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	
	//----------------
	
	user := NullUser{
		ID:   types.NewV4P(),
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}
	
	//根据条件更新
	num, err := db.Update(&user).ByModel(NullUser{
		Name: types.NewString("tom"),
	})
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	//-------------------
	
	
	user := NullUser{
		ID:   types.NewV4P(),
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}
	
	//使用条件构造器
	num, err := db.Update(&user).ByWhere(new(ldb.WhereBuilder).
		Eq("id", user.ID,true).
		NoLike("age", *user.Name, user.Name != nil).
		Ne("age", user.Age,false))
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)

delete

 
	
	//根据主键删除
	num, err := db.Delete(User{}).ByPrimaryKey(id)
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	
	//----------------
	
 
	//根据条件删除
	num, err := db.Delete(User{}).ByModel(NullUser{
		Name: types.NewString("tom"),
	})
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	//-------------------
	
	 
	
	//使用条件构造器
	num, err := db.Delete(User{}).ByWhere(new(ldb.WhereBuilder).
		Eq("id", user.ID,true).
		NoLike("age", *user.Name, user.Name != nil).
		Ne("age", user.Age,false))
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)

###select

	user := User{}
	num, err := db.Select(User{}).ByPrimaryKey(id).ScanOne(&user)
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	
	fmt.Println(user)
	//-----------------
	
	users := make([]User,0)
	num, err := db.Select(User{}).ByPrimaryKey(id1,id2,id3).ScanList(&users)
	if err != nil {
		return err
	}
	// num=1
	fmt.Println(num)
	
	fmt.Println(user)
	//-----------------
	
	
	users := make([]User, 0)
	num, err := db.Select(User{}).ByModel(NullUser{
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}).ScanList(&users)
	if err != nil {
		return err
	}
	// num 查询的数据个数
	fmt.Println(num)
	
	fmt.Println(users)
	//----------------
	
	user := User{}
	//随机获取一个
	num, err := db.Select(User{}).ByModel(NullUser{
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	}).ScanFirst(&user)
	if err != nil {
		return err
	}
	// num 查询的数据个数
	fmt.Println(num)
	
	fmt.Println(user)
	//-----------------------
	
	
	has, err := db.Select(User{}).ByModel(NullUser{
		Name: types.NewString("tom"),
		Age:  types.NewInt(12),
	})
	if err != nil {
		return err
	}
	// has 查询是否存在数据
	fmt.Println(num)
	
	
	
	//----------------------------
	has, err := db.Has(User{}).ByWhere(new(ldb.WhereBuilder).
		Eq("id", user.ID, true).
		NoLike("age", *user.Name, user.Name != nil).
		Ne("age", user.Age, false))
	if err != nil {
		return err
	}
	// has 查询是否存在数据
	fmt.Println(has)

	
	
	
	has, err := db.Has(User{}).ByWhere(new(ldb.WhereBuilder).
		Eq("id", user.ID, true).
		NoLike("age", *user.Name, user.Name != nil).
		Ne("age", user.Age, false))
	if err != nil {
		return err
	}
	// num 查询是否存在数据
	fmt.Println(has)

	
	
	

###tx

	tx := Db.Begin()
    err := tx.Commit()
    err := tx.Rollback()