update dependencies
This commit is contained in:
parent
fce1b99683
commit
397e9c0842
164 changed files with 5207 additions and 2213 deletions
2
vendor/github.com/go-pg/pg/orm/field.go
generated
vendored
2
vendor/github.com/go-pg/pg/orm/field.go
generated
vendored
|
|
@ -20,7 +20,7 @@ type Field struct {
|
|||
|
||||
GoName string // struct field name, e.g. Id
|
||||
SQLName string // SQL name, .e.g. id
|
||||
Column types.Q // escaped SQL name
|
||||
Column types.Q // escaped SQL name, e.g. "id"
|
||||
SQLType string
|
||||
Index []int
|
||||
Default types.Q
|
||||
|
|
|
|||
39
vendor/github.com/go-pg/pg/orm/insert.go
generated
vendored
39
vendor/github.com/go-pg/pg/orm/insert.go
generated
vendored
|
|
@ -52,36 +52,41 @@ func (q insertQuery) AppendQuery(b []byte) ([]byte, error) {
|
|||
} else {
|
||||
b = q.q.appendFirstTable(b)
|
||||
}
|
||||
b = append(b, " ("...)
|
||||
if q.q.hasModel() {
|
||||
b = appendColumns(b, table.Fields)
|
||||
} else if q.q.columns != nil {
|
||||
b = q.q.appendColumns(b)
|
||||
}
|
||||
b = append(b, ')')
|
||||
|
||||
if q.q.hasModel() {
|
||||
b = append(b, " VALUES ("...)
|
||||
if q.q.hasOtherTables() && q.q.columns != nil {
|
||||
b = append(b, " ("...)
|
||||
b = q.q.appendColumns(b)
|
||||
b = append(b, ")"...)
|
||||
b = append(b, " SELECT * FROM "...)
|
||||
b = q.q.appendOtherTables(b)
|
||||
} else {
|
||||
fields, err := q.q.getFields()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(fields) == 0 {
|
||||
fields = table.Fields
|
||||
}
|
||||
|
||||
b = append(b, " ("...)
|
||||
b = appendColumns(b, fields)
|
||||
b = append(b, ") VALUES ("...)
|
||||
if value.Kind() == reflect.Struct {
|
||||
b = q.appendValues(b, table.Fields, value)
|
||||
b = q.appendValues(b, fields, value)
|
||||
} else {
|
||||
for i := 0; i < value.Len(); i++ {
|
||||
el := value.Index(i)
|
||||
if el.Kind() == reflect.Interface {
|
||||
el = el.Elem()
|
||||
}
|
||||
b = q.appendValues(b, table.Fields, reflect.Indirect(el))
|
||||
b = q.appendValues(b, fields, reflect.Indirect(el))
|
||||
if i != value.Len()-1 {
|
||||
b = append(b, "), ("...)
|
||||
}
|
||||
}
|
||||
}
|
||||
b = append(b, ')')
|
||||
}
|
||||
|
||||
if q.q.hasOtherTables() {
|
||||
b = append(b, " SELECT * FROM "...)
|
||||
b = q.q.appendOtherTables(b)
|
||||
b = append(b, ")"...)
|
||||
}
|
||||
|
||||
if q.q.onConflict != nil {
|
||||
|
|
|
|||
12
vendor/github.com/go-pg/pg/orm/insert_test.go
generated
vendored
12
vendor/github.com/go-pg/pg/orm/insert_test.go
generated
vendored
|
|
@ -43,6 +43,18 @@ type InsertQTest struct {
|
|||
}
|
||||
|
||||
var _ = Describe("Insert", func() {
|
||||
It("supports Column", func() {
|
||||
model := &InsertTest{
|
||||
Id: 1,
|
||||
Value: "hello",
|
||||
}
|
||||
q := NewQuery(nil, model).Column("id")
|
||||
|
||||
b, err := insertQuery{q: q}.AppendQuery(nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(string(b)).To(Equal(`INSERT INTO "insert_tests" ("id") VALUES (1)`))
|
||||
})
|
||||
|
||||
It("multi inserts", func() {
|
||||
q := NewQuery(nil, &InsertTest{
|
||||
Id: 1,
|
||||
|
|
|
|||
29
vendor/github.com/go-pg/pg/orm/query.go
generated
vendored
29
vendor/github.com/go-pg/pg/orm/query.go
generated
vendored
|
|
@ -188,7 +188,7 @@ func (q *Query) getDataFields() ([]*Field, error) {
|
|||
return q._getFields(true)
|
||||
}
|
||||
|
||||
func (q *Query) _getFields(filterPKs bool) ([]*Field, error) {
|
||||
func (q *Query) _getFields(omitPKs bool) ([]*Field, error) {
|
||||
table := q.model.Table()
|
||||
|
||||
var columns []*Field
|
||||
|
|
@ -203,7 +203,7 @@ func (q *Query) _getFields(filterPKs bool) ([]*Field, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if filterPKs && field.HasFlag(PrimaryKeyFlag) {
|
||||
if omitPKs && field.HasFlag(PrimaryKeyFlag) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
@ -595,10 +595,16 @@ func (q *Query) SelectOrInsert(values ...interface{}) (inserted bool, err error)
|
|||
return false, q.stickyErr
|
||||
}
|
||||
|
||||
insertq := q
|
||||
if len(insertq.columns) > 0 {
|
||||
insertq = insertq.Copy()
|
||||
insertq.columns = nil
|
||||
}
|
||||
|
||||
var insertErr error
|
||||
for i := 0; i < 5; i++ {
|
||||
if i >= 2 {
|
||||
time.Sleep(internal.RetryBackoff(i-2, 250*time.Millisecond, 4*time.Second))
|
||||
time.Sleep(internal.RetryBackoff(i-2, 250*time.Millisecond, 5*time.Second))
|
||||
}
|
||||
|
||||
err := q.Select(values...)
|
||||
|
|
@ -609,7 +615,7 @@ func (q *Query) SelectOrInsert(values ...interface{}) (inserted bool, err error)
|
|||
return false, err
|
||||
}
|
||||
|
||||
res, err := q.Insert(values...)
|
||||
res, err := insertq.Insert(values...)
|
||||
if err != nil {
|
||||
insertErr = err
|
||||
if pgErr, ok := err.(internal.PGError); ok {
|
||||
|
|
@ -636,12 +642,21 @@ func (q *Query) SelectOrInsert(values ...interface{}) (inserted bool, err error)
|
|||
}
|
||||
|
||||
// Update updates the model.
|
||||
func (q *Query) Update(values ...interface{}) (Result, error) {
|
||||
func (q *Query) Update(scan ...interface{}) (Result, error) {
|
||||
return q.update(scan, false)
|
||||
}
|
||||
|
||||
// Update updates the model omitting null columns.
|
||||
func (q *Query) UpdateNotNull(scan ...interface{}) (Result, error) {
|
||||
return q.update(scan, true)
|
||||
}
|
||||
|
||||
func (q *Query) update(scan []interface{}, omitZero bool) (Result, error) {
|
||||
if q.stickyErr != nil {
|
||||
return nil, q.stickyErr
|
||||
}
|
||||
|
||||
model, err := q.newModel(values...)
|
||||
model, err := q.newModel(scan...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -652,7 +667,7 @@ func (q *Query) Update(values ...interface{}) (Result, error) {
|
|||
}
|
||||
}
|
||||
|
||||
res, err := q.db.Query(model, updateQuery{q}, q.model)
|
||||
res, err := q.db.Query(model, updateQuery{q: q, omitZero: omitZero}, q.model)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
10
vendor/github.com/go-pg/pg/orm/table.go
generated
vendored
10
vendor/github.com/go-pg/pg/orm/table.go
generated
vendored
|
|
@ -32,10 +32,10 @@ type Table struct {
|
|||
Alias types.Q
|
||||
ModelName string
|
||||
|
||||
Fields []*Field
|
||||
PKs []*Field
|
||||
Columns []*Field
|
||||
FieldsMap map[string]*Field
|
||||
Fields []*Field // PKs + DataFields
|
||||
PKs []*Field
|
||||
DataFields []*Field
|
||||
FieldsMap map[string]*Field
|
||||
|
||||
Methods map[string]*Method
|
||||
Relations map[string]*Relation
|
||||
|
|
@ -71,7 +71,7 @@ func (t *Table) AddField(field *Field) {
|
|||
if field.HasFlag(PrimaryKeyFlag) {
|
||||
t.PKs = append(t.PKs, field)
|
||||
} else {
|
||||
t.Columns = append(t.Columns, field)
|
||||
t.DataFields = append(t.DataFields, field)
|
||||
}
|
||||
t.FieldsMap[field.SQLName] = field
|
||||
}
|
||||
|
|
|
|||
16
vendor/github.com/go-pg/pg/orm/update.go
generated
vendored
16
vendor/github.com/go-pg/pg/orm/update.go
generated
vendored
|
|
@ -17,6 +17,8 @@ func Update(db DB, model ...interface{}) error {
|
|||
|
||||
type updateQuery struct {
|
||||
q *Query
|
||||
|
||||
omitZero bool
|
||||
}
|
||||
|
||||
var _ QueryAppender = (*updateQuery)(nil)
|
||||
|
|
@ -107,12 +109,18 @@ func (q updateQuery) appendSetStruct(b []byte, strct reflect.Value) ([]byte, err
|
|||
}
|
||||
|
||||
if len(fields) == 0 {
|
||||
fields = q.q.model.Table().Columns
|
||||
fields = q.q.model.Table().DataFields
|
||||
}
|
||||
|
||||
for i, f := range fields {
|
||||
if i > 0 {
|
||||
pos := len(b)
|
||||
for _, f := range fields {
|
||||
if q.omitZero && f.OmitZero(strct) {
|
||||
continue
|
||||
}
|
||||
|
||||
if len(b) != pos {
|
||||
b = append(b, ", "...)
|
||||
pos = len(b)
|
||||
}
|
||||
|
||||
b = append(b, f.Column...)
|
||||
|
|
@ -129,7 +137,7 @@ func (q updateQuery) appendSetSlice(b []byte, slice reflect.Value) ([]byte, erro
|
|||
}
|
||||
|
||||
if len(fields) == 0 {
|
||||
fields = q.q.model.Table().Columns
|
||||
fields = q.q.model.Table().DataFields
|
||||
}
|
||||
|
||||
for i, f := range fields {
|
||||
|
|
|
|||
20
vendor/github.com/go-pg/pg/orm/update_test.go
generated
vendored
20
vendor/github.com/go-pg/pg/orm/update_test.go
generated
vendored
|
|
@ -11,6 +11,22 @@ type UpdateTest struct {
|
|||
}
|
||||
|
||||
var _ = Describe("Update", func() {
|
||||
It("updates model", func() {
|
||||
q := NewQuery(nil, &UpdateTest{})
|
||||
|
||||
b, err := updateQuery{q: q}.AppendQuery(nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(string(b)).To(Equal(`UPDATE "update_tests" AS "update_test" SET "value" = NULL WHERE "update_test"."id" = NULL`))
|
||||
})
|
||||
|
||||
It("omits zero", func() {
|
||||
q := NewQuery(nil, &UpdateTest{})
|
||||
|
||||
b, err := updateQuery{q: q, omitZero: true}.AppendQuery(nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(string(b)).To(Equal(`UPDATE "update_tests" AS "update_test" SET WHERE "update_test"."id" = NULL`))
|
||||
})
|
||||
|
||||
It("bulk updates", func() {
|
||||
q := NewQuery(nil, &UpdateTest{}).
|
||||
Model(&UpdateTest{
|
||||
|
|
@ -20,7 +36,7 @@ var _ = Describe("Update", func() {
|
|||
Id: 2,
|
||||
})
|
||||
|
||||
b, err := updateQuery{q}.AppendQuery(nil)
|
||||
b, err := updateQuery{q: q}.AppendQuery(nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(string(b)).To(Equal(`UPDATE "update_tests" AS "update_test" SET "value" = _data."value" FROM (VALUES (1, 'hello'::mytype), (2, NULL::mytype)) AS _data("id", "value") WHERE "update_test"."id" = _data."id"`))
|
||||
})
|
||||
|
|
@ -32,7 +48,7 @@ var _ = Describe("Update", func() {
|
|||
Table("wrapper").
|
||||
Where("update_test.id = wrapper.id")
|
||||
|
||||
b, err := updateQuery{q}.AppendQuery(nil)
|
||||
b, err := updateQuery{q: q}.AppendQuery(nil)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(string(b)).To(Equal(`WITH "wrapper" AS (SELECT "update_test"."id", "update_test"."value" FROM "update_tests" AS "update_test") UPDATE "update_tests" AS "update_test" SET "value" = NULL FROM "wrapper" WHERE (update_test.id = wrapper.id)`))
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue