MCPcopy Index your code
hub / github.com/upper/db / toColumnsValuesAndArguments

Function toColumnsValuesAndArguments

internal/sqlbuilder/convert.go:126–159  ·  view source on GitHub ↗

toColumnsValuesAndArguments maps the given columnNames and columnValues into expr's Columns and Values, it also extracts and returns query arguments.

(columnNames []string, columnValues []interface{})

Source from the content-addressed store, hash-verified

124// toColumnsValuesAndArguments maps the given columnNames and columnValues into
125// expr's Columns and Values, it also extracts and returns query arguments.
126func 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.

Callers 1

processValuesMethod · 0.85

Calls 1

ColumnWithNameFunction · 0.92

Tested by

no test coverage detected