MCPcopy
hub / github.com/mathaou/termdbms / PopulateDataForResult

Method PopulateDataForResult

viewer/modelutil.go:165–198  ·  view source on GitHub ↗
(c *sql.Rows, indexMap *int, schemaName string)

Source from the content-addressed store, hash-verified

163}
164
165func (m *TuiModel) PopulateDataForResult(c *sql.Rows, indexMap *int, schemaName string) {
166 columnNames, _ := c.Columns()
167 columnValues := make(map[string][]interface{})
168
169 for c.Next() { // each row of the table
170 // golang wizardry
171 columns := make([]interface{}, len(columnNames))
172 columnPointers := make([]interface{}, len(columnNames))
173 // init interface array
174 for i := range columns {
175 columnPointers[i] = &columns[i]
176 }
177
178 c.Scan(columnPointers...)
179
180 for i, colName := range columnNames {
181 val := columnPointers[i].(*interface{})
182 columnValues[colName] = append(columnValues[colName], *val)
183 }
184 }
185
186 // onto the next schema
187 *indexMap++
188 if m.QueryResult != nil && m.QueryData != nil {
189 m.QueryResult.Data[schemaName] = columnValues
190 m.QueryData.TableHeaders[schemaName] = columnNames // headers for the schema, for later reference
191 m.QueryData.TableIndexMap[*indexMap] = schemaName
192 return
193 }
194 m.Table().Data[schemaName] = columnValues // data for schema, organized by column
195 m.Data().TableHeaders[schemaName] = columnNames // headers for the schema, for later reference
196 // mapping between schema and an int ( since maps aren't deterministic), for later reference
197 m.Data().TableIndexMap[*indexMap] = schemaName
198}
199
200func (m *TuiModel) SwapTableValues(f, t *TableState) {
201 from := &f.Data

Callers 2

SetModelMethod · 0.95
handleSQLModeFunction · 0.80

Calls 2

TableMethod · 0.95
DataMethod · 0.95

Tested by

no test coverage detected