toColumnsValuesAndArguments maps the given columnNames and columnValues into expr's Columns and Values, it also extracts and returns query arguments.
(columnNames []string, columnValues []interface{})
| 124 | // toColumnsValuesAndArguments maps the given columnNames and columnValues into |
| 125 | // expr's Columns and Values, it also extracts and returns query arguments. |
| 126 | func toColumnsValuesAndArguments(columnNames []string, columnValues []interface{}) (*exql.Columns, *exql.Values, []interface{}, error) { |
| 127 | var arguments []interface{} |
| 128 | |
| 129 | columns := new(exql.Columns) |
| 130 | |
| 131 | columns.Columns = make([]exql.Fragment, 0, len(columnNames)) |
| 132 | for i := range columnNames { |
| 133 | columns.Columns = append(columns.Columns, exql.ColumnWithName(columnNames[i])) |
| 134 | } |
| 135 | |
| 136 | values := new(exql.Values) |
| 137 | |
| 138 | arguments = make([]interface{}, 0, len(columnValues)) |
| 139 | values.Values = make([]exql.Fragment, 0, len(columnValues)) |
| 140 | |
| 141 | for i := range columnValues { |
| 142 | switch v := columnValues[i].(type) { |
| 143 | case *exql.Raw, exql.Raw: |
| 144 | values.Values = append(values.Values, sqlDefault) |
| 145 | case *exql.Value: |
| 146 | // Adding value. |
| 147 | values.Values = append(values.Values, v) |
| 148 | case exql.Value: |
| 149 | // Adding value. |
| 150 | values.Values = append(values.Values, &v) |
| 151 | default: |
| 152 | // Adding both value and placeholder. |
| 153 | values.Values = append(values.Values, sqlPlaceholder) |
| 154 | arguments = append(arguments, v) |
| 155 | } |
| 156 | } |
| 157 | |
| 158 | return columns, values, arguments, nil |
| 159 | } |
| 160 | |
| 161 | // Preprocess expands arguments that needs to be expanded and compiles a query |
| 162 | // into a single string. |
no test coverage detected