(schema *model.Schema, rows *sql.Rows)
| 350 | } |
| 351 | |
| 352 | func scanRows(schema *model.Schema, rows *sql.Rows) ([]map[string]any, error) { |
| 353 | var results []map[string]any |
| 354 | for rows.Next() { |
| 355 | ptrs := make([]any, len(schema.Fields)) |
| 356 | for i, f := range schema.Fields { |
| 357 | ptrs[i] = newScanPtr(f.Type) |
| 358 | } |
| 359 | if err := rows.Scan(ptrs...); err != nil { |
| 360 | return nil, fmt.Errorf("model/sqlite: scan row: %w", err) |
| 361 | } |
| 362 | row := make(map[string]any, len(schema.Fields)) |
| 363 | for i, f := range schema.Fields { |
| 364 | row[f.Column] = derefScanPtr(ptrs[i], f.Type) |
| 365 | } |
| 366 | results = append(results, row) |
| 367 | } |
| 368 | return results, rows.Err() |
| 369 | } |
| 370 | |
| 371 | func newScanPtr(t reflect.Type) any { |
| 372 | switch t.Kind() { |
no test coverage detected
searching dependent graphs…