ConvertMapToValuesForCreate convert map to values
(stmt *gorm.Statement, mapValue map[string]interface{})
| 10 | |
| 11 | // ConvertMapToValuesForCreate convert map to values |
| 12 | func ConvertMapToValuesForCreate(stmt *gorm.Statement, mapValue map[string]interface{}) (values clause.Values) { |
| 13 | values.Columns = make([]clause.Column, 0, len(mapValue)) |
| 14 | selectColumns, restricted := stmt.SelectAndOmitColumns(true, false) |
| 15 | |
| 16 | keys := make([]string, 0, len(mapValue)) |
| 17 | for k := range mapValue { |
| 18 | keys = append(keys, k) |
| 19 | } |
| 20 | sort.Strings(keys) |
| 21 | |
| 22 | for _, k := range keys { |
| 23 | value := mapValue[k] |
| 24 | if stmt.Schema != nil { |
| 25 | if field := stmt.Schema.LookUpField(k); field != nil { |
| 26 | k = field.DBName |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | if v, ok := selectColumns[k]; (ok && v) || (!ok && !restricted) { |
| 31 | values.Columns = append(values.Columns, clause.Column{Name: k}) |
| 32 | if len(values.Values) == 0 { |
| 33 | values.Values = [][]interface{}{{}} |
| 34 | } |
| 35 | |
| 36 | values.Values[0] = append(values.Values[0], value) |
| 37 | } |
| 38 | } |
| 39 | return |
| 40 | } |
| 41 | |
| 42 | // ConvertSliceOfMapToValuesForCreate convert slice of map to values |
| 43 | func ConvertSliceOfMapToValuesForCreate(stmt *gorm.Statement, mapValues []map[string]interface{}) (values clause.Values) { |