Merge pull request #73 in YUNIONIO/onecloud from ~ZHOUYOUSONG/onecloud:bugfix/yousong-dep-ensure-fix-sqlchemy to release/2.0.0

* commit 'c42db3568b0ee0c2e18e11549a028d8125a2969b':
  vendor: dep ensure to update sqlchemy
This commit is contained in:
李泽玺
2018-08-18 09:50:06 +08:00
2 changed files with 22 additions and 15 deletions
Generated
+1 -1
View File
@@ -896,7 +896,7 @@
branch = "master"
name = "yunion.io/x/sqlchemy"
packages = ["."]
revision = "8d8043b1fc6f8a9192f1d086520bb167a8423475"
revision = "a74ef73e555a1ed2e19b1a47e0567814c289eaf9"
[[projects]]
branch = "master"
+21 -14
View File
@@ -13,15 +13,7 @@ func (t *STableSpec) Insert(dt interface{}) error {
return t.insert(dt, false)
}
func (t *STableSpec) insert(dt interface{}, debug bool) error {
beforeInsertFunc := reflect.ValueOf(dt).MethodByName("BeforeInsert")
if beforeInsertFunc.IsValid() && !beforeInsertFunc.IsNil() {
beforeInsertFunc.Call([]reflect.Value{})
}
// dataType := reflect.TypeOf(dt).Elem()
dataValue := reflect.ValueOf(dt).Elem()
func (t *STableSpec) insertSqlPrep(dataFields map[string]interface{}) (string, []interface{}, error) {
var autoIncField string
createdAtFields := make([]string, 0)
@@ -29,7 +21,6 @@ func (t *STableSpec) insert(dt interface{}, debug bool) error {
format := make([]string, 0)
values := make([]interface{}, 0)
fields := reflectutils.FetchStructFieldNameValueInterfaces(dataValue)
for _, c := range t.columns {
isAutoInc := false
nc, ok := c.(*SIntegerColumn)
@@ -40,7 +31,7 @@ func (t *STableSpec) insert(dt interface{}, debug bool) error {
k := c.Name()
dtc, ok := c.(*SDateTimeColumn)
ov := fields[k]
ov := dataFields[k]
if ok && (dtc.IsCreatedAt || dtc.IsUpdatedAt) {
createdAtFields = append(createdAtFields, k)
@@ -57,8 +48,9 @@ func (t *STableSpec) insert(dt interface{}, debug bool) error {
panic(fmt.Sprintf("multiple auto_increment columns: %q, %q", autoIncField, k))
}
autoIncField = k
} else {
return "", nil, fmt.Errorf("cannot insert for null primary key %q", k)
}
return fmt.Errorf("cannot insert for null primary key %q", k)
} else if !c.IsSupportDefault() && len(c.Default()) > 0 && ov != nil && c.IsZero(ov) { // empty text value
val := c.ConvertFromString(c.Default())
values = append(values, val)
@@ -71,6 +63,21 @@ func (t *STableSpec) insert(dt interface{}, debug bool) error {
t.name,
strings.Join(names, ", "),
strings.Join(format, ", "))
return insertSql, values, nil
}
func (t *STableSpec) insert(data interface{}, debug bool) error {
beforeInsertFunc := reflect.ValueOf(data).MethodByName("BeforeInsert")
if beforeInsertFunc.IsValid() && !beforeInsertFunc.IsNil() {
beforeInsertFunc.Call([]reflect.Value{})
}
dataValue := reflect.ValueOf(data).Elem()
dataFields := reflectutils.FetchStructFieldNameValueInterfaces(dataValue)
insertSql, values, err := t.insertSqlPrep(dataFields)
if err != nil {
return err
}
if DEBUG_SQLCHEMY || debug {
log.Debugf("%s values: %s", insertSql, values)
@@ -115,11 +122,11 @@ func (t *STableSpec) insert(dt interface{}, debug bool) error {
q = q.Equals(c.Name(), lastId)
}
} else {
q = q.Equals(c.Name(), fields[c.Name()])
q = q.Equals(c.Name(), dataFields[c.Name()])
}
}
}
err = q.First(dt)
err = q.First(data)
if err != nil {
err := fmt.Errorf("query after insert failed: %v", err)
return err