fork github.com/doug-martin

This commit is contained in:
2025-03-22 23:02:05 +08:00
commit f14642a736
131 changed files with 34555 additions and 0 deletions
+722
View File
@@ -0,0 +1,722 @@
//nolint:lll // sql statements are long
package db_test
import (
dbsql "database/sql"
"fmt"
dbv2 "git.fsdpf.net/go/db/v2"
_ "git.fsdpf.net/go/db/v2/dialect/mysql"
"git.fsdpf.net/go/db/v2/exp"
)
func ExampleUpdate_withStruct() {
type item struct {
Address string `db:"address"`
Name string `db:"name"`
}
sql, args, _ := dbv2.Update("items").Set(
item{Name: "Test", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdate_withOmitNilTag() {
type item struct {
FirstName string `db:"first_name" ff:"omitnil"`
LastName string `db:"last_name" ff:"omitnil"`
Address1 *string `db:"address1" ff:"omitnil"`
Address2 *string `db:"address2" ff:"omitnil"`
Address3 *string `db:"address3" ff:"omitnil"`
}
address1 := "113 Test Addr"
var emptyString string
sql, args, _ := dbv2.Update("items").Set(
item{
FirstName: "Test First Name",
LastName: "",
Address1: &address1,
Address2: &emptyString,
Address3: nil, // will omit nil pointer
},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address1"='113 Test Addr',"address2"='',"first_name"='Test First Name',"last_name"='' []
}
func ExampleUpdate_withOmitEmptyTag() {
type item struct {
FirstName string `db:"first_name" ff:"omitempty"`
LastName string `db:"last_name" ff:"omitempty"`
Address1 *string `db:"address1" ff:"omitempty"`
Address2 *string `db:"address2" ff:"omitempty"`
Address3 *string `db:"address3" ff:"omitempty"`
}
address1 := "114 Test Addr"
var emptyString string
sql, args, _ := dbv2.Update("items").Set(
item{
FirstName: "Test First Name",
LastName: "", // will omit zero field
Address1: &address1,
Address2: &emptyString,
Address3: nil, // will omit nil pointer
},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address1"='114 Test Addr',"address2"='',"first_name"='Test First Name' []
}
func ExampleUpdate_withOmitEmptyTag_valuer() {
type item struct {
FirstName dbsql.NullString `db:"first_name" ff:"omitempty"`
MiddleName dbsql.NullString `db:"middle_name" ff:"omitempty"`
LastName dbsql.NullString `db:"last_name" ff:"omitempty"`
Address1 *dbsql.NullString `db:"address1" ff:"omitempty"`
Address2 *dbsql.NullString `db:"address2" ff:"omitempty"`
Address3 *dbsql.NullString `db:"address3" ff:"omitempty"`
Address4 *dbsql.NullString `db:"address4" ff:"omitempty"`
}
query, args, _ := dbv2.Update("items").Set(
item{
FirstName: dbsql.NullString{Valid: true, String: "Test First Name"},
MiddleName: dbsql.NullString{Valid: true, String: ""},
LastName: dbsql.NullString{}, // will omit zero valuer struct
Address1: &dbsql.NullString{Valid: true, String: "Test Address 1"},
Address2: &dbsql.NullString{Valid: true, String: ""},
Address3: &dbsql.NullString{},
Address4: nil, // will omit nil pointer
},
).ToSQL()
fmt.Println(query, args)
// Output:
// UPDATE "items" SET "address1"='Test Address 1',"address2"='',"address3"=NULL,"first_name"='Test First Name',"middle_name"='' []
}
func ExampleUpdate_withDbv2Record() {
sql, args, _ := dbv2.Update("items").Set(
dbv2.Record{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdate_withMap() {
sql, args, _ := dbv2.Update("items").Set(
map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdate_withExpressions() {
sql, args, _ := dbv2.Update("items").Set([]exp.UpdateExpression{
dbv2.C("name").Set("Test"),
dbv2.C("address").Set("111 Test Addr"),
}).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "name"='Test',"address"='111 Test Addr' []
}
func ExampleUpdate_withSkipUpdateTag() {
type item struct {
Address string `db:"address"`
Name string `db:"name" ff:"skipupdate"`
}
sql, args, _ := dbv2.Update("items").Set(
item{Name: "Test", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr' []
}
func ExampleUpdateDataset_Executor() {
db := getDB()
update := db.Update("test_user").
Where(dbv2.C("first_name").Eq("Bob")).
Set(dbv2.Record{"first_name": "Bobby"}).
Executor()
if r, err := update.Exec(); err != nil {
fmt.Println(err.Error())
} else {
c, _ := r.RowsAffected()
fmt.Printf("Updated %d users", c)
}
// Output:
// Updated 1 users
}
func ExampleUpdateDataset_Executor_returning() {
db := getDB()
var ids []int64
update := db.Update("test_user").
Set(dbv2.Record{"last_name": "ucon"}).
Where(dbv2.Ex{"last_name": "Yukon"}).
Returning("id").
Executor()
if err := update.ScanVals(&ids); err != nil {
fmt.Println(err.Error())
} else {
fmt.Printf("Updated users with ids %+v", ids)
}
// Output:
// Updated users with ids [1 2 3]
}
func ExampleUpdateDataset_Returning() {
sql, _, _ := dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Returning("id").
ToSQL()
fmt.Println(sql)
sql, _, _ = dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Returning(dbv2.T("test").All()).
ToSQL()
fmt.Println(sql)
sql, _, _ = dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Returning("a", "b").
ToSQL()
fmt.Println(sql)
// Output:
// UPDATE "test" SET "foo"='bar' RETURNING "id"
// UPDATE "test" SET "foo"='bar' RETURNING "test".*
// UPDATE "test" SET "foo"='bar' RETURNING "a", "b"
}
func ExampleUpdateDataset_With() {
sql, _, _ := dbv2.Update("test").
With("some_vals(val)", dbv2.From().Select(dbv2.L("123"))).
Where(dbv2.C("val").Eq(dbv2.From("some_vals").Select("val"))).
Set(dbv2.Record{"name": "Test"}).ToSQL()
fmt.Println(sql)
// Output:
// WITH some_vals(val) AS (SELECT 123) UPDATE "test" SET "name"='Test' WHERE ("val" IN (SELECT "val" FROM "some_vals"))
}
func ExampleUpdateDataset_WithRecursive() {
sql, _, _ := dbv2.Update("nums").
WithRecursive("nums(x)", dbv2.From().Select(dbv2.L("1").As("num")).
UnionAll(dbv2.From("nums").
Select(dbv2.L("x+1").As("num")).Where(dbv2.C("x").Lt(5)))).
Set(dbv2.Record{"foo": dbv2.T("nums").Col("num")}).
ToSQL()
fmt.Println(sql)
// Output:
// WITH RECURSIVE nums(x) AS (SELECT 1 AS "num" UNION ALL (SELECT x+1 AS "num" FROM "nums" WHERE ("x" < 5))) UPDATE "nums" SET "foo"="nums"."num"
}
func ExampleUpdateDataset_Limit() {
ds := dbv2.Dialect("mysql").
Update("test").
Set(dbv2.Record{"foo": "bar"}).
Limit(10)
sql, _, _ := ds.ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `test` SET `foo`='bar' LIMIT 10
}
func ExampleUpdateDataset_LimitAll() {
ds := dbv2.Dialect("mysql").
Update("test").
Set(dbv2.Record{"foo": "bar"}).
LimitAll()
sql, _, _ := ds.ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `test` SET `foo`='bar' LIMIT ALL
}
func ExampleUpdateDataset_ClearLimit() {
ds := dbv2.Dialect("mysql").
Update("test").
Set(dbv2.Record{"foo": "bar"}).
Limit(10)
sql, _, _ := ds.ClearLimit().ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `test` SET `foo`='bar'
}
func ExampleUpdateDataset_Order() {
ds := dbv2.Dialect("mysql").
Update("test").
Set(dbv2.Record{"foo": "bar"}).
Order(dbv2.C("a").Asc())
sql, _, _ := ds.ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `test` SET `foo`='bar' ORDER BY `a` ASC
}
func ExampleUpdateDataset_OrderAppend() {
ds := dbv2.Dialect("mysql").
Update("test").
Set(dbv2.Record{"foo": "bar"}).
Order(dbv2.C("a").Asc())
sql, _, _ := ds.OrderAppend(dbv2.C("b").Desc().NullsLast()).ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `test` SET `foo`='bar' ORDER BY `a` ASC, `b` DESC NULLS LAST
}
func ExampleUpdateDataset_OrderPrepend() {
ds := dbv2.Dialect("mysql").
Update("test").
Set(dbv2.Record{"foo": "bar"}).
Order(dbv2.C("a").Asc())
sql, _, _ := ds.OrderPrepend(dbv2.C("b").Desc().NullsLast()).ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `test` SET `foo`='bar' ORDER BY `b` DESC NULLS LAST, `a` ASC
}
func ExampleUpdateDataset_ClearOrder() {
ds := dbv2.Dialect("mysql").
Update("test").
Set(dbv2.Record{"foo": "bar"}).
Order(dbv2.C("a").Asc())
sql, _, _ := ds.ClearOrder().ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `test` SET `foo`='bar'
}
func ExampleUpdateDataset_From() {
ds := dbv2.Update("table_one").
Set(dbv2.Record{"foo": dbv2.I("table_two.bar")}).
From("table_two").
Where(dbv2.Ex{"table_one.id": dbv2.I("table_two.id")})
sql, _, _ := ds.ToSQL()
fmt.Println(sql)
// Output:
// UPDATE "table_one" SET "foo"="table_two"."bar" FROM "table_two" WHERE ("table_one"."id" = "table_two"."id")
}
func ExampleUpdateDataset_From_postgres() {
dialect := dbv2.Dialect("postgres")
ds := dialect.Update("table_one").
Set(dbv2.Record{"foo": dbv2.I("table_two.bar")}).
From("table_two").
Where(dbv2.Ex{"table_one.id": dbv2.I("table_two.id")})
sql, _, _ := ds.ToSQL()
fmt.Println(sql)
// Output:
// UPDATE "table_one" SET "foo"="table_two"."bar" FROM "table_two" WHERE ("table_one"."id" = "table_two"."id")
}
func ExampleUpdateDataset_From_mysql() {
dialect := dbv2.Dialect("mysql")
ds := dialect.Update("table_one").
Set(dbv2.Record{"foo": dbv2.I("table_two.bar")}).
From("table_two").
Where(dbv2.Ex{"table_one.id": dbv2.I("table_two.id")})
sql, _, _ := ds.ToSQL()
fmt.Println(sql)
// Output:
// UPDATE `table_one`,`table_two` SET `foo`=`table_two`.`bar` WHERE (`table_one`.`id` = `table_two`.`id`)
}
func ExampleUpdateDataset_Where() {
// By default everything is anded together
sql, _, _ := dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Where(dbv2.Ex{
"a": dbv2.Op{"gt": 10},
"b": dbv2.Op{"lt": 10},
"c": nil,
"d": []string{"a", "b", "c"},
}).ToSQL()
fmt.Println(sql)
// You can use ExOr to get ORed expressions together
sql, _, _ = dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Where(dbv2.ExOr{
"a": dbv2.Op{"gt": 10},
"b": dbv2.Op{"lt": 10},
"c": nil,
"d": []string{"a", "b", "c"},
}).ToSQL()
fmt.Println(sql)
// You can use Or with Ex to Or multiple Ex maps together
sql, _, _ = dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Where(
dbv2.Or(
dbv2.Ex{
"a": dbv2.Op{"gt": 10},
"b": dbv2.Op{"lt": 10},
},
dbv2.Ex{
"c": nil,
"d": []string{"a", "b", "c"},
},
),
).ToSQL()
fmt.Println(sql)
// By default everything is anded together
sql, _, _ = dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Where(
dbv2.C("a").Gt(10),
dbv2.C("b").Lt(10),
dbv2.C("c").IsNull(),
dbv2.C("d").In("a", "b", "c"),
).ToSQL()
fmt.Println(sql)
// You can use a combination of Ors and Ands
sql, _, _ = dbv2.Update("test").
Set(dbv2.Record{"foo": "bar"}).
Where(
dbv2.Or(
dbv2.C("a").Gt(10),
dbv2.And(
dbv2.C("b").Lt(10),
dbv2.C("c").IsNull(),
),
),
).ToSQL()
fmt.Println(sql)
// Output:
// UPDATE "test" SET "foo"='bar' WHERE (("a" > 10) AND ("b" < 10) AND ("c" IS NULL) AND ("d" IN ('a', 'b', 'c')))
// UPDATE "test" SET "foo"='bar' WHERE (("a" > 10) OR ("b" < 10) OR ("c" IS NULL) OR ("d" IN ('a', 'b', 'c')))
// UPDATE "test" SET "foo"='bar' WHERE ((("a" > 10) AND ("b" < 10)) OR (("c" IS NULL) AND ("d" IN ('a', 'b', 'c'))))
// UPDATE "test" SET "foo"='bar' WHERE (("a" > 10) AND ("b" < 10) AND ("c" IS NULL) AND ("d" IN ('a', 'b', 'c')))
// UPDATE "test" SET "foo"='bar' WHERE (("a" > 10) OR (("b" < 10) AND ("c" IS NULL)))
}
func ExampleUpdateDataset_Where_prepared() {
// By default everything is anded together
sql, args, _ := dbv2.Update("test").
Prepared(true).
Set(dbv2.Record{"foo": "bar"}).
Where(dbv2.Ex{
"a": dbv2.Op{"gt": 10},
"b": dbv2.Op{"lt": 10},
"c": nil,
"d": []string{"a", "b", "c"},
}).ToSQL()
fmt.Println(sql, args)
// You can use ExOr to get ORed expressions together
sql, args, _ = dbv2.Update("test").Prepared(true).
Set(dbv2.Record{"foo": "bar"}).
Where(dbv2.ExOr{
"a": dbv2.Op{"gt": 10},
"b": dbv2.Op{"lt": 10},
"c": nil,
"d": []string{"a", "b", "c"},
}).ToSQL()
fmt.Println(sql, args)
// You can use Or with Ex to Or multiple Ex maps together
sql, args, _ = dbv2.Update("test").Prepared(true).
Set(dbv2.Record{"foo": "bar"}).
Where(
dbv2.Or(
dbv2.Ex{
"a": dbv2.Op{"gt": 10},
"b": dbv2.Op{"lt": 10},
},
dbv2.Ex{
"c": nil,
"d": []string{"a", "b", "c"},
},
),
).ToSQL()
fmt.Println(sql, args)
// By default everything is anded together
sql, args, _ = dbv2.Update("test").Prepared(true).
Set(dbv2.Record{"foo": "bar"}).
Where(
dbv2.C("a").Gt(10),
dbv2.C("b").Lt(10),
dbv2.C("c").IsNull(),
dbv2.C("d").In("a", "b", "c"),
).ToSQL()
fmt.Println(sql, args)
// You can use a combination of Ors and Ands
sql, args, _ = dbv2.Update("test").Prepared(true).
Set(dbv2.Record{"foo": "bar"}).
Where(
dbv2.Or(
dbv2.C("a").Gt(10),
dbv2.And(
dbv2.C("b").Lt(10),
dbv2.C("c").IsNull(),
),
),
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "test" SET "foo"=? WHERE (("a" > ?) AND ("b" < ?) AND ("c" IS NULL) AND ("d" IN (?, ?, ?))) [bar 10 10 a b c]
// UPDATE "test" SET "foo"=? WHERE (("a" > ?) OR ("b" < ?) OR ("c" IS NULL) OR ("d" IN (?, ?, ?))) [bar 10 10 a b c]
// UPDATE "test" SET "foo"=? WHERE ((("a" > ?) AND ("b" < ?)) OR (("c" IS NULL) AND ("d" IN (?, ?, ?)))) [bar 10 10 a b c]
// UPDATE "test" SET "foo"=? WHERE (("a" > ?) AND ("b" < ?) AND ("c" IS NULL) AND ("d" IN (?, ?, ?))) [bar 10 10 a b c]
// UPDATE "test" SET "foo"=? WHERE (("a" > ?) OR (("b" < ?) AND ("c" IS NULL))) [bar 10 10]
}
func ExampleUpdateDataset_ClearWhere() {
ds := dbv2.
Update("test").
Set(dbv2.Record{"foo": "bar"}).
Where(
dbv2.Or(
dbv2.C("a").Gt(10),
dbv2.And(
dbv2.C("b").Lt(10),
dbv2.C("c").IsNull(),
),
),
)
sql, _, _ := ds.ClearWhere().ToSQL()
fmt.Println(sql)
// Output:
// UPDATE "test" SET "foo"='bar'
}
func ExampleUpdateDataset_Table() {
ds := dbv2.Update("test")
sql, _, _ := ds.Table("test2").Set(dbv2.Record{"foo": "bar"}).ToSQL()
fmt.Println(sql)
// Output:
// UPDATE "test2" SET "foo"='bar'
}
func ExampleUpdateDataset_Table_aliased() {
ds := dbv2.Update("test")
sql, _, _ := ds.Table(dbv2.T("test").As("t")).Set(dbv2.Record{"foo": "bar"}).ToSQL()
fmt.Println(sql)
// Output:
// UPDATE "test" AS "t" SET "foo"='bar'
}
func ExampleUpdateDataset_Set() {
type item struct {
Address string `db:"address"`
Name string `db:"name"`
}
sql, args, _ := dbv2.Update("items").Set(
item{Name: "Test", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
sql, args, _ = dbv2.Update("items").Set(
dbv2.Record{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
sql, args, _ = dbv2.Update("items").Set(
map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdateDataset_Set_struct() {
type item struct {
Address string `db:"address"`
Name string `db:"name"`
}
sql, args, _ := dbv2.Update("items").Set(
item{Name: "Test", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdateDataset_Set_dbv2Record() {
sql, args, _ := dbv2.Update("items").Set(
dbv2.Record{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdateDataset_Set_map() {
sql, args, _ := dbv2.Update("items").Set(
map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdateDataset_Set_withSkipUpdateTag() {
type item struct {
Address string `db:"address"`
Name string `db:"name" ff:"skipupdate"`
}
sql, args, _ := dbv2.Update("items").Set(
item{Name: "Test", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr' []
}
func ExampleUpdateDataset_Set_withDefaultIfEmptyTag() {
type item struct {
Address string `db:"address"`
Name string `db:"name" ff:"defaultifempty"`
}
sql, args, _ := dbv2.Update("items").Set(
item{Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
sql, args, _ = dbv2.Update("items").Set(
item{Name: "Bob Yukon", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"=DEFAULT []
// UPDATE "items" SET "address"='111 Test Addr',"name"='Bob Yukon' []
}
func ExampleUpdateDataset_Set_withNoTags() {
type item struct {
Address string
Name string
}
sql, args, _ := dbv2.Update("items").Set(
item{Name: "Test", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"='111 Test Addr',"name"='Test' []
}
func ExampleUpdateDataset_Set_withEmbeddedStruct() {
type Address struct {
Street string `db:"address_street"`
State string `db:"address_state"`
}
type User struct {
Address
FirstName string
LastName string
}
ds := dbv2.Update("user").Set(
User{Address: Address{Street: "111 Street", State: "NY"}, FirstName: "Greg", LastName: "Farley"},
)
updateSQL, args, _ := ds.ToSQL()
fmt.Println(updateSQL, args)
// Output:
// UPDATE "user" SET "address_state"='NY',"address_street"='111 Street',"firstname"='Greg',"lastname"='Farley' []
}
func ExampleUpdateDataset_Set_withIgnoredEmbedded() {
type Address struct {
Street string
State string
}
type User struct {
Address `db:"-"`
FirstName string
LastName string
}
ds := dbv2.Update("user").Set(
User{Address: Address{Street: "111 Street", State: "NY"}, FirstName: "Greg", LastName: "Farley"},
)
updateSQL, args, _ := ds.ToSQL()
fmt.Println(updateSQL, args)
// Output:
// UPDATE "user" SET "firstname"='Greg',"lastname"='Farley' []
}
func ExampleUpdateDataset_Set_withNilEmbeddedPointer() {
type Address struct {
Street string
State string
}
type User struct {
*Address
FirstName string
LastName string
}
ds := dbv2.Update("user").Set(
User{FirstName: "Greg", LastName: "Farley"},
)
updateSQL, args, _ := ds.ToSQL()
fmt.Println(updateSQL, args)
// Output:
// UPDATE "user" SET "firstname"='Greg',"lastname"='Farley' []
}
func ExampleUpdateDataset_ToSQL_prepared() {
type item struct {
Address string `db:"address"`
Name string `db:"name"`
}
sql, args, _ := dbv2.From("items").Prepared(true).Update().Set(
item{Name: "Test", Address: "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
sql, args, _ = dbv2.From("items").Prepared(true).Update().Set(
dbv2.Record{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
sql, args, _ = dbv2.From("items").Prepared(true).Update().Set(
map[string]interface{}{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"=?,"name"=? [111 Test Addr Test]
// UPDATE "items" SET "address"=?,"name"=? [111 Test Addr Test]
// UPDATE "items" SET "address"=?,"name"=? [111 Test Addr Test]
}
func ExampleUpdateDataset_Prepared() {
sql, args, _ := dbv2.Update("items").Prepared(true).Set(
dbv2.Record{"name": "Test", "address": "111 Test Addr"},
).ToSQL()
fmt.Println(sql, args)
// Output:
// UPDATE "items" SET "address"=?,"name"=? [111 Test Addr Test]
}