Lint with golangci-lint
This commit is contained in:
		
							parent
							
								
									0028246ea5
								
							
						
					
					
						commit
						4456df7a5d
					
				| @ -102,10 +102,10 @@ func (association *Association) Replace(values ...interface{}) error { | |||||||
| 				switch reflectValue.Kind() { | 				switch reflectValue.Kind() { | ||||||
| 				case reflect.Slice, reflect.Array: | 				case reflect.Slice, reflect.Array: | ||||||
| 					for i := 0; i < reflectValue.Len(); i++ { | 					for i := 0; i < reflectValue.Len(); i++ { | ||||||
| 						rel.Field.Set(reflectValue.Index(i), reflect.Zero(rel.Field.FieldType).Interface()) | 						association.Error = rel.Field.Set(reflectValue.Index(i), reflect.Zero(rel.Field.FieldType).Interface()) | ||||||
| 					} | 					} | ||||||
| 				case reflect.Struct: | 				case reflect.Struct: | ||||||
| 					rel.Field.Set(reflectValue, reflect.Zero(rel.Field.FieldType).Interface()) | 					association.Error = rel.Field.Set(reflectValue, reflect.Zero(rel.Field.FieldType).Interface()) | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				for _, ref := range rel.References { | 				for _, ref := range rel.References { | ||||||
| @ -187,18 +187,17 @@ func (association *Association) Replace(values ...interface{}) error { | |||||||
| func (association *Association) Delete(values ...interface{}) error { | func (association *Association) Delete(values ...interface{}) error { | ||||||
| 	if association.Error == nil { | 	if association.Error == nil { | ||||||
| 		var ( | 		var ( | ||||||
| 			reflectValue                 = association.DB.Statement.ReflectValue | 			reflectValue  = association.DB.Statement.ReflectValue | ||||||
| 			rel                          = association.Relationship | 			rel           = association.Relationship | ||||||
| 			primaryFields, foreignFields []*schema.Field | 			primaryFields []*schema.Field | ||||||
| 			foreignKeys                  []string | 			foreignKeys   []string | ||||||
| 			updateAttrs                  = map[string]interface{}{} | 			updateAttrs   = map[string]interface{}{} | ||||||
| 			conds                        []clause.Expression | 			conds         []clause.Expression | ||||||
| 		) | 		) | ||||||
| 
 | 
 | ||||||
| 		for _, ref := range rel.References { | 		for _, ref := range rel.References { | ||||||
| 			if ref.PrimaryValue == "" { | 			if ref.PrimaryValue == "" { | ||||||
| 				primaryFields = append(primaryFields, ref.PrimaryKey) | 				primaryFields = append(primaryFields, ref.PrimaryKey) | ||||||
| 				foreignFields = append(foreignFields, ref.ForeignKey) |  | ||||||
| 				foreignKeys = append(foreignKeys, ref.ForeignKey.DBName) | 				foreignKeys = append(foreignKeys, ref.ForeignKey.DBName) | ||||||
| 				updateAttrs[ref.ForeignKey.DBName] = nil | 				updateAttrs[ref.ForeignKey.DBName] = nil | ||||||
| 			} else { | 			} else { | ||||||
| @ -284,21 +283,23 @@ func (association *Association) Delete(values ...interface{}) error { | |||||||
| 							} | 							} | ||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
| 						rel.Field.Set(data, validFieldValues.Interface()) | 						association.Error = rel.Field.Set(data, validFieldValues.Interface()) | ||||||
| 					case reflect.Struct: | 					case reflect.Struct: | ||||||
| 						for idx, field := range rel.FieldSchema.PrimaryFields { | 						for idx, field := range rel.FieldSchema.PrimaryFields { | ||||||
| 							primaryValues[idx], _ = field.ValueOf(fieldValue) | 							primaryValues[idx], _ = field.ValueOf(fieldValue) | ||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
| 						if _, ok := relValuesMap[utils.ToStringKey(primaryValues...)]; ok { | 						if _, ok := relValuesMap[utils.ToStringKey(primaryValues...)]; ok { | ||||||
| 							rel.Field.Set(data, reflect.Zero(rel.FieldSchema.ModelType).Interface()) | 							if association.Error = rel.Field.Set(data, reflect.Zero(rel.FieldSchema.ModelType).Interface()); association.Error != nil { | ||||||
|  | 								break | ||||||
|  | 							} | ||||||
| 
 | 
 | ||||||
| 							if rel.JoinTable == nil { | 							if rel.JoinTable == nil { | ||||||
| 								for _, ref := range rel.References { | 								for _, ref := range rel.References { | ||||||
| 									if ref.OwnPrimaryKey || ref.PrimaryValue != "" { | 									if ref.OwnPrimaryKey || ref.PrimaryValue != "" { | ||||||
| 										ref.ForeignKey.Set(fieldValue, reflect.Zero(ref.ForeignKey.FieldType).Interface()) | 										association.Error = ref.ForeignKey.Set(fieldValue, reflect.Zero(ref.ForeignKey.FieldType).Interface()) | ||||||
| 									} else { | 									} else { | ||||||
| 										ref.ForeignKey.Set(data, reflect.Zero(ref.ForeignKey.FieldType).Interface()) | 										association.Error = ref.ForeignKey.Set(data, reflect.Zero(ref.ForeignKey.FieldType).Interface()) | ||||||
| 									} | 									} | ||||||
| 								} | 								} | ||||||
| 							} | 							} | ||||||
| @ -436,12 +437,18 @@ func (association *Association) saveAssociation(clear bool, values ...interface{ | |||||||
| 		if len(values) != reflectValue.Len() { | 		if len(values) != reflectValue.Len() { | ||||||
| 			if clear && len(values) == 0 { | 			if clear && len(values) == 0 { | ||||||
| 				for i := 0; i < reflectValue.Len(); i++ { | 				for i := 0; i < reflectValue.Len(); i++ { | ||||||
| 					association.Relationship.Field.Set(reflectValue.Index(i), reflect.New(association.Relationship.Field.IndirectFieldType).Interface()) | 					if err := association.Relationship.Field.Set(reflectValue.Index(i), reflect.New(association.Relationship.Field.IndirectFieldType).Interface()); err != nil { | ||||||
|  | 						association.Error = err | ||||||
|  | 						break | ||||||
|  | 					} | ||||||
| 
 | 
 | ||||||
| 					if association.Relationship.JoinTable == nil { | 					if association.Relationship.JoinTable == nil { | ||||||
| 						for _, ref := range association.Relationship.References { | 						for _, ref := range association.Relationship.References { | ||||||
| 							if !ref.OwnPrimaryKey && ref.PrimaryValue == "" { | 							if !ref.OwnPrimaryKey && ref.PrimaryValue == "" { | ||||||
| 								ref.ForeignKey.Set(reflectValue.Index(i), reflect.Zero(ref.ForeignKey.FieldType).Interface()) | 								if err := ref.ForeignKey.Set(reflectValue.Index(i), reflect.Zero(ref.ForeignKey.FieldType).Interface()); err != nil { | ||||||
|  | 									association.Error = err | ||||||
|  | 									break | ||||||
|  | 								} | ||||||
| 							} | 							} | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| @ -461,12 +468,12 @@ func (association *Association) saveAssociation(clear bool, values ...interface{ | |||||||
| 		} | 		} | ||||||
| 	case reflect.Struct: | 	case reflect.Struct: | ||||||
| 		if clear && len(values) == 0 { | 		if clear && len(values) == 0 { | ||||||
| 			association.Relationship.Field.Set(reflectValue, reflect.New(association.Relationship.Field.IndirectFieldType).Interface()) | 			association.Error = association.Relationship.Field.Set(reflectValue, reflect.New(association.Relationship.Field.IndirectFieldType).Interface()) | ||||||
| 
 | 
 | ||||||
| 			if association.Relationship.JoinTable == nil { | 			if association.Relationship.JoinTable == nil && association.Error == nil { | ||||||
| 				for _, ref := range association.Relationship.References { | 				for _, ref := range association.Relationship.References { | ||||||
| 					if !ref.OwnPrimaryKey && ref.PrimaryValue == "" { | 					if !ref.OwnPrimaryKey && ref.PrimaryValue == "" { | ||||||
| 						ref.ForeignKey.Set(reflectValue, reflect.Zero(ref.ForeignKey.FieldType).Interface()) | 						association.Error = ref.ForeignKey.Set(reflectValue, reflect.Zero(ref.ForeignKey.FieldType).Interface()) | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
|  | |||||||
| @ -21,7 +21,7 @@ func SaveBeforeAssociations(db *gorm.DB) { | |||||||
| 				for _, ref := range rel.References { | 				for _, ref := range rel.References { | ||||||
| 					if !ref.OwnPrimaryKey { | 					if !ref.OwnPrimaryKey { | ||||||
| 						pv, _ := ref.PrimaryKey.ValueOf(elem) | 						pv, _ := ref.PrimaryKey.ValueOf(elem) | ||||||
| 						ref.ForeignKey.Set(obj, pv) | 						db.AddError(ref.ForeignKey.Set(obj, pv)) | ||||||
| 
 | 
 | ||||||
| 						if dest, ok := db.Statement.Dest.(map[string]interface{}); ok { | 						if dest, ok := db.Statement.Dest.(map[string]interface{}); ok { | ||||||
| 							dest[ref.ForeignKey.DBName] = pv | 							dest[ref.ForeignKey.DBName] = pv | ||||||
| @ -121,9 +121,9 @@ func SaveAfterAssociations(db *gorm.DB) { | |||||||
| 						for _, ref := range rel.References { | 						for _, ref := range rel.References { | ||||||
| 							if ref.OwnPrimaryKey { | 							if ref.OwnPrimaryKey { | ||||||
| 								fv, _ := ref.PrimaryKey.ValueOf(obj) | 								fv, _ := ref.PrimaryKey.ValueOf(obj) | ||||||
| 								ref.ForeignKey.Set(rv, fv) | 								db.AddError(ref.ForeignKey.Set(rv, fv)) | ||||||
| 							} else if ref.PrimaryValue != "" { | 							} else if ref.PrimaryValue != "" { | ||||||
| 								ref.ForeignKey.Set(rv, ref.PrimaryValue) | 								db.AddError(ref.ForeignKey.Set(rv, ref.PrimaryValue)) | ||||||
| 							} | 							} | ||||||
| 						} | 						} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ import ( | |||||||
| 
 | 
 | ||||||
| // ConvertMapToValuesForCreate convert map to values
 | // ConvertMapToValuesForCreate convert map to values
 | ||||||
| func ConvertMapToValuesForCreate(stmt *gorm.Statement, mapValue map[string]interface{}) (values clause.Values) { | func ConvertMapToValuesForCreate(stmt *gorm.Statement, mapValue map[string]interface{}) (values clause.Values) { | ||||||
| 	columns := make([]string, 0, len(mapValue)) | 	values.Columns = make([]clause.Column, 0, len(mapValue)) | ||||||
| 	selectColumns, restricted := stmt.SelectAndOmitColumns(true, false) | 	selectColumns, restricted := stmt.SelectAndOmitColumns(true, false) | ||||||
| 
 | 
 | ||||||
| 	var keys []string | 	var keys []string | ||||||
| @ -25,7 +25,7 @@ func ConvertMapToValuesForCreate(stmt *gorm.Statement, mapValue map[string]inter | |||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if v, ok := selectColumns[k]; (ok && v) || (!ok && !restricted) { | 		if v, ok := selectColumns[k]; (ok && v) || (!ok && !restricted) { | ||||||
| 			columns = append(columns, k) | 			values.Columns = append(values.Columns, clause.Column{Name: k}) | ||||||
| 			values.Values[0] = append(values.Values[0], value) | 			values.Values[0] = append(values.Values[0], value) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -1,11 +0,0 @@ | |||||||
| package callbacks |  | ||||||
| 
 |  | ||||||
| import "gorm.io/gorm" |  | ||||||
| 
 |  | ||||||
| type beforeSaveInterface interface { |  | ||||||
| 	BeforeSave(*gorm.DB) error |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| type beforeCreateInterface interface { |  | ||||||
| 	BeforeCreate(*gorm.DB) error |  | ||||||
| } |  | ||||||
| @ -41,7 +41,7 @@ func (db *DB) Clauses(conds ...clause.Expression) (tx *DB) { | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| var tableRegexp = regexp.MustCompile("(?i).+ AS (\\w+)\\s*$") | var tableRegexp = regexp.MustCompile(`(?i).+ AS (\w+)\s*$`) | ||||||
| 
 | 
 | ||||||
| // Table specify the table you would like to run db operations
 | // Table specify the table you would like to run db operations
 | ||||||
| func (db *DB) Table(name string) (tx *DB) { | func (db *DB) Table(name string) (tx *DB) { | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ type Writer interface { | |||||||
| // Builder builder interface
 | // Builder builder interface
 | ||||||
| type Builder interface { | type Builder interface { | ||||||
| 	Writer | 	Writer | ||||||
| 	WriteQuoted(field interface{}) error | 	WriteQuoted(field interface{}) | ||||||
| 	AddVar(Writer, ...interface{}) | 	AddVar(Writer, ...interface{}) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,9 +4,9 @@ type JoinType string | |||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
| 	CrossJoin JoinType = "CROSS" | 	CrossJoin JoinType = "CROSS" | ||||||
| 	InnerJoin          = "INNER" | 	InnerJoin JoinType = "INNER" | ||||||
| 	LeftJoin           = "LEFT" | 	LeftJoin  JoinType = "LEFT" | ||||||
| 	RightJoin          = "RIGHT" | 	RightJoin JoinType = "RIGHT" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // Join join clause for from
 | // Join join clause for from
 | ||||||
|  | |||||||
| @ -33,8 +33,6 @@ func (where Where) Build(builder Builder) { | |||||||
| 
 | 
 | ||||||
| 		expr.Build(builder) | 		expr.Build(builder) | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	return |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // MergeClause merge where clauses
 | // MergeClause merge where clauses
 | ||||||
|  | |||||||
| @ -138,11 +138,11 @@ func (tx *DB) assignExprsToValue(exprs []clause.Expression) { | |||||||
| 			switch column := eq.Column.(type) { | 			switch column := eq.Column.(type) { | ||||||
| 			case string: | 			case string: | ||||||
| 				if field := tx.Statement.Schema.LookUpField(column); field != nil { | 				if field := tx.Statement.Schema.LookUpField(column); field != nil { | ||||||
| 					field.Set(tx.Statement.ReflectValue, eq.Value) | 					tx.AddError(field.Set(tx.Statement.ReflectValue, eq.Value)) | ||||||
| 				} | 				} | ||||||
| 			case clause.Column: | 			case clause.Column: | ||||||
| 				if field := tx.Statement.Schema.LookUpField(column.Name); field != nil { | 				if field := tx.Statement.Schema.LookUpField(column.Name); field != nil { | ||||||
| 					field.Set(tx.Statement.ReflectValue, eq.Value) | 					tx.AddError(field.Set(tx.Statement.ReflectValue, eq.Value)) | ||||||
| 				} | 				} | ||||||
| 			default: | 			default: | ||||||
| 			} | 			} | ||||||
| @ -433,7 +433,7 @@ func (db *DB) Rollback() *DB { | |||||||
| 
 | 
 | ||||||
| func (db *DB) SavePoint(name string) *DB { | func (db *DB) SavePoint(name string) *DB { | ||||||
| 	if savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok { | 	if savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok { | ||||||
| 		savePointer.SavePoint(db, name) | 		db.AddError(savePointer.SavePoint(db, name)) | ||||||
| 	} else { | 	} else { | ||||||
| 		db.AddError(ErrUnsupportedDriver) | 		db.AddError(ErrUnsupportedDriver) | ||||||
| 	} | 	} | ||||||
| @ -442,7 +442,7 @@ func (db *DB) SavePoint(name string) *DB { | |||||||
| 
 | 
 | ||||||
| func (db *DB) RollbackTo(name string) *DB { | func (db *DB) RollbackTo(name string) *DB { | ||||||
| 	if savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok { | 	if savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok { | ||||||
| 		savePointer.RollbackTo(db, name) | 		db.AddError(savePointer.RollbackTo(db, name)) | ||||||
| 	} else { | 	} else { | ||||||
| 		db.AddError(ErrUnsupportedDriver) | 		db.AddError(ErrUnsupportedDriver) | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -129,7 +129,7 @@ func (l logger) Error(ctx context.Context, msg string, data ...interface{}) { | |||||||
| // Trace print sql message
 | // Trace print sql message
 | ||||||
| func (l logger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) { | func (l logger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) { | ||||||
| 	if l.LogLevel > 0 { | 	if l.LogLevel > 0 { | ||||||
| 		elapsed := time.Now().Sub(begin) | 		elapsed := time.Since(begin) | ||||||
| 		switch { | 		switch { | ||||||
| 		case err != nil && l.LogLevel >= Error: | 		case err != nil && l.LogLevel >= Error: | ||||||
| 			sql, rows := fc() | 			sql, rows := fc() | ||||||
|  | |||||||
| @ -31,19 +31,19 @@ func TestExplainSQL(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			SQL:           "create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11)", | 			SQL:           "create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11)", | ||||||
| 			NumericRegexp: regexp.MustCompile("@p(\\d+)"), | 			NumericRegexp: regexp.MustCompile(`@p(\d+)`), | ||||||
| 			Vars:          []interface{}{"jinzhu", 1, 999.99, true, []byte("12345"), tt, &tt, nil, "w@g.com", myrole, pwd}, | 			Vars:          []interface{}{"jinzhu", 1, 999.99, true, []byte("12345"), tt, &tt, nil, "w@g.com", myrole, pwd}, | ||||||
| 			Result:        `create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ("jinzhu", 1, 999.990000, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.com", "admin", "pass")`, | 			Result:        `create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ("jinzhu", 1, 999.990000, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.com", "admin", "pass")`, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			SQL:           "create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ($3, $4, $1, $2, $7, $8, $5, $6, $9, $10, $11)", | 			SQL:           "create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ($3, $4, $1, $2, $7, $8, $5, $6, $9, $10, $11)", | ||||||
| 			NumericRegexp: regexp.MustCompile("\\$(\\d+)"), | 			NumericRegexp: regexp.MustCompile(`\$(\d+)`), | ||||||
| 			Vars:          []interface{}{999.99, true, "jinzhu", 1, &tt, nil, []byte("12345"), tt, "w@g.com", myrole, pwd}, | 			Vars:          []interface{}{999.99, true, "jinzhu", 1, &tt, nil, []byte("12345"), tt, "w@g.com", myrole, pwd}, | ||||||
| 			Result:        `create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ("jinzhu", 1, 999.990000, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.com", "admin", "pass")`, | 			Result:        `create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ("jinzhu", 1, 999.990000, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.com", "admin", "pass")`, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			SQL:           "create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values (@p1, @p11, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10)", | 			SQL:           "create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values (@p1, @p11, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10)", | ||||||
| 			NumericRegexp: regexp.MustCompile("@p(\\d+)"), | 			NumericRegexp: regexp.MustCompile(`@p(\d+)`), | ||||||
| 			Vars:          []interface{}{"jinzhu", 999.99, true, []byte("12345"), tt, &tt, nil, "w@g.com", myrole, pwd, 1}, | 			Vars:          []interface{}{"jinzhu", 999.99, true, []byte("12345"), tt, &tt, nil, "w@g.com", myrole, pwd, 1}, | ||||||
| 			Result:        `create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ("jinzhu", 1, 999.990000, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.com", "admin", "pass")`, | 			Result:        `create table users (name, age, height, actived, bytes, create_at, update_at, deleted_at, email, role, pass) values ("jinzhu", 1, 999.990000, true, "12345", "2020-02-23 11:10:10", "2020-02-23 11:10:10", NULL, "w@g.com", "admin", "pass")`, | ||||||
| 		}, | 		}, | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| package migrator | package migrator | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"context" | ||||||
| 	"database/sql" | 	"database/sql" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"reflect" | 	"reflect" | ||||||
| @ -139,7 +140,7 @@ func (m Migrator) CreateTable(values ...interface{}) error { | |||||||
| 
 | 
 | ||||||
| 			for _, dbName := range stmt.Schema.DBNames { | 			for _, dbName := range stmt.Schema.DBNames { | ||||||
| 				field := stmt.Schema.FieldsByDBName[dbName] | 				field := stmt.Schema.FieldsByDBName[dbName] | ||||||
| 				createTableSQL += fmt.Sprintf("? ?") | 				createTableSQL += "? ?" | ||||||
| 				hasPrimaryKeyInDataType = hasPrimaryKeyInDataType || strings.Contains(strings.ToUpper(string(field.DataType)), "PRIMARY KEY") | 				hasPrimaryKeyInDataType = hasPrimaryKeyInDataType || strings.Contains(strings.ToUpper(string(field.DataType)), "PRIMARY KEY") | ||||||
| 				values = append(values, clause.Column{Name: dbName}, m.DB.Migrator().FullDataTypeOf(field)) | 				values = append(values, clause.Column{Name: dbName}, m.DB.Migrator().FullDataTypeOf(field)) | ||||||
| 				createTableSQL += "," | 				createTableSQL += "," | ||||||
| @ -534,7 +535,9 @@ func (m Migrator) ReorderModels(values []interface{}, autoAdd bool) (results []i | |||||||
| 		dep := Dependency{ | 		dep := Dependency{ | ||||||
| 			Statement: &gorm.Statement{DB: m.DB, Dest: value}, | 			Statement: &gorm.Statement{DB: m.DB, Dest: value}, | ||||||
| 		} | 		} | ||||||
| 		dep.Parse(value) | 		if err := dep.Parse(value); err != nil { | ||||||
|  | 			m.DB.Logger.Error(context.Background(), "failed to parse value %#v, got error %v", value, err) | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 		for _, rel := range dep.Schema.Relationships.Relations { | 		for _, rel := range dep.Schema.Relationships.Relations { | ||||||
| 			if c := rel.ParseConstraint(); c != nil && c.Schema == dep.Statement.Schema && c.Schema != c.ReferenceSchema { | 			if c := rel.ParseConstraint(); c != nil && c.Schema == dep.Statement.Schema && c.Schema != c.ReferenceSchema { | ||||||
|  | |||||||
| @ -25,12 +25,12 @@ const ( | |||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
| 	Bool   DataType = "bool" | 	Bool   DataType = "bool" | ||||||
| 	Int             = "int" | 	Int    DataType = "int" | ||||||
| 	Uint            = "uint" | 	Uint   DataType = "uint" | ||||||
| 	Float           = "float" | 	Float  DataType = "float" | ||||||
| 	String          = "string" | 	String DataType = "string" | ||||||
| 	Time            = "time" | 	Time   DataType = "time" | ||||||
| 	Bytes           = "bytes" | 	Bytes  DataType = "bytes" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Field struct { | type Field struct { | ||||||
| @ -455,13 +455,13 @@ func (field *Field) setupValuerAndSetter() { | |||||||
| 
 | 
 | ||||||
| 			if valuer, ok := v.(driver.Valuer); ok { | 			if valuer, ok := v.(driver.Valuer); ok { | ||||||
| 				if v, err = valuer.Value(); err == nil { | 				if v, err = valuer.Value(); err == nil { | ||||||
| 					setter(value, v) | 					err = setter(value, v) | ||||||
| 				} | 				} | ||||||
| 			} else if reflectV.Kind() == reflect.Ptr { | 			} else if reflectV.Kind() == reflect.Ptr { | ||||||
| 				if reflectV.IsNil() { | 				if reflectV.IsNil() { | ||||||
| 					field.ReflectValueOf(value).Set(reflect.New(field.FieldType).Elem()) | 					field.ReflectValueOf(value).Set(reflect.New(field.FieldType).Elem()) | ||||||
| 				} else { | 				} else { | ||||||
| 					setter(value, reflectV.Elem().Interface()) | 					err = setter(value, reflectV.Elem().Interface()) | ||||||
| 				} | 				} | ||||||
| 			} else { | 			} else { | ||||||
| 				return fmt.Errorf("failed to set value %+v to field %v", v, field.Name) | 				return fmt.Errorf("failed to set value %+v to field %v", v, field.Name) | ||||||
| @ -744,7 +744,7 @@ func (field *Field) setupValuerAndSetter() { | |||||||
| 						if reflectV.IsNil() { | 						if reflectV.IsNil() { | ||||||
| 							field.ReflectValueOf(value).Set(reflect.New(field.FieldType).Elem()) | 							field.ReflectValueOf(value).Set(reflect.New(field.FieldType).Elem()) | ||||||
| 						} else { | 						} else { | ||||||
| 							field.Set(value, reflectV.Elem().Interface()) | 							err = field.Set(value, reflectV.Elem().Interface()) | ||||||
| 						} | 						} | ||||||
| 					} else { | 					} else { | ||||||
| 						fieldValue := field.ReflectValueOf(value) | 						fieldValue := field.ReflectValueOf(value) | ||||||
|  | |||||||
| @ -71,9 +71,9 @@ func (schema *Schema) parseRelation(field *Field) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if polymorphic, _ := field.TagSettings["POLYMORPHIC"]; polymorphic != "" { | 	if polymorphic := field.TagSettings["POLYMORPHIC"]; polymorphic != "" { | ||||||
| 		schema.buildPolymorphicRelation(relation, field, polymorphic) | 		schema.buildPolymorphicRelation(relation, field, polymorphic) | ||||||
| 	} else if many2many, _ := field.TagSettings["MANY2MANY"]; many2many != "" { | 	} else if many2many := field.TagSettings["MANY2MANY"]; many2many != "" { | ||||||
| 		schema.buildMany2ManyRelation(relation, field, many2many) | 		schema.buildMany2ManyRelation(relation, field, many2many) | ||||||
| 	} else { | 	} else { | ||||||
| 		switch field.IndirectFieldType.Kind() { | 		switch field.IndirectFieldType.Kind() { | ||||||
| @ -312,7 +312,6 @@ func (schema *Schema) buildMany2ManyRelation(relation *Relationship, field *Fiel | |||||||
| 			OwnPrimaryKey: ownPriamryField, | 			OwnPrimaryKey: ownPriamryField, | ||||||
| 		}) | 		}) | ||||||
| 	} | 	} | ||||||
| 	return |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (schema *Schema) guessRelation(relation *Relationship, field *Field, guessHas bool) { | func (schema *Schema) guessRelation(relation *Relationship, field *Field, guessHas bool) { | ||||||
|  | |||||||
| @ -60,9 +60,8 @@ func (stmt *Statement) WriteByte(c byte) error { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // WriteQuoted write quoted value
 | // WriteQuoted write quoted value
 | ||||||
| func (stmt *Statement) WriteQuoted(value interface{}) error { | func (stmt *Statement) WriteQuoted(value interface{}) { | ||||||
| 	stmt.QuoteTo(&stmt.SQL, value) | 	stmt.QuoteTo(&stmt.SQL, value) | ||||||
| 	return nil |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // QuoteTo write quoted value to writer
 | // QuoteTo write quoted value to writer
 | ||||||
| @ -215,7 +214,7 @@ func (stmt *Statement) AddClause(v clause.Interface) { | |||||||
| 		optimizer.ModifyStatement(stmt) | 		optimizer.ModifyStatement(stmt) | ||||||
| 	} else { | 	} else { | ||||||
| 		name := v.Name() | 		name := v.Name() | ||||||
| 		c, _ := stmt.Clauses[name] | 		c := stmt.Clauses[name] | ||||||
| 		c.Name = name | 		c.Name = name | ||||||
| 		v.MergeClause(&c) | 		v.MergeClause(&c) | ||||||
| 		stmt.Clauses[name] = c | 		stmt.Clauses[name] = c | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ var gormSourceDir string | |||||||
| 
 | 
 | ||||||
| func init() { | func init() { | ||||||
| 	_, file, _, _ := runtime.Caller(0) | 	_, file, _, _ := runtime.Caller(0) | ||||||
| 	gormSourceDir = regexp.MustCompile("utils.utils\\.go").ReplaceAllString(file, "") | 	gormSourceDir = regexp.MustCompile(`utils.utils\.go`).ReplaceAllString(file, "") | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func FileWithLineNum() string { | func FileWithLineNum() string { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu