diff options
Diffstat (limited to 'select.go')
| -rw-r--r-- | select.go | 20 |
1 files changed, 10 insertions, 10 deletions
@@ -25,7 +25,7 @@ func (s Store[R]) Select(db Handle, query string, args ...any) (result []R, retu return nil, err } defer func() { - returnedError = mergeRowsCloseError(returnedError, rows.Close()) + returnedError = mergeCloseError("Rows", returnedError, rows.Close()) }() slots := make([]any, len(indexes)) @@ -63,7 +63,7 @@ func (s Store[R]) SelectWhere(db Handle, partialQuery string, args ...any) (resu return nil, err } defer func() { - returnedError = mergeRowsCloseError(returnedError, rows.Close()) + returnedError = mergeCloseError("Rows", returnedError, rows.Close()) }() slots := make([]any, len(indexes)) @@ -114,11 +114,11 @@ func startSelectQuery(db Handle, plan internal.Plan, query string, args ...any) func startSelectWhereQuery(db Handle, plan internal.Plan, partialQuery string, args ...any) (rows *sql.Rows, indexes [][]int, err error) { if plan.Select.Query == "" { - return nil, nil, errors.New("cannot execute SelectWhere() because SELECT query could not be autogenerated") + return nil, nil, errors.New("cannot execute SelectWhere() because query could not be autogenerated") } query := plan.Select.Query + partialQuery rows, err = db.Query(query, args...) - return rows, plan.Select.ArgumentIndexes, err + return rows, plan.Select.ScanIndexes, err } func collectRow(rows *sql.Rows, v reflect.Value, slots []any, indexes [][]int) error { @@ -132,14 +132,14 @@ func collectRow(rows *sql.Rows, v reflect.Value, slots []any, indexes [][]int) e return nil } -func mergeRowsCloseError(err, closeErr error) error { +func mergeCloseError(typeName string, err, closeErr error) error { switch { case closeErr == nil: return err case err == nil: - return fmt.Errorf("during rows.Close(): %w", closeErr) + return fmt.Errorf("during %s.Close(): %w", typeName, closeErr) default: - return fmt.Errorf("%w (additional error during rows.Close(): %s)", err, closeErr.Error()) + return fmt.Errorf("%w (additional error during %s.Close(): %s)", err, typeName, closeErr.Error()) } } @@ -184,11 +184,11 @@ func (s Store[R]) SelectOneWhere(db Handle, partialQuery string, args ...any) (r func selectOneWhere(db Handle, plan internal.Plan, v reflect.Value, partialQuery string, args []any) error { if plan.Select.Query == "" { - return errors.New("cannot execute SelectOneWhere() because SELECT query could not be autogenerated") + return errors.New("cannot execute SelectOneWhere() because query could not be autogenerated") } query := plan.Select.Query + partialQuery - slots := make([]any, len(plan.Select.ArgumentIndexes)) - for idx, index := range plan.Select.ArgumentIndexes { + slots := make([]any, len(plan.Select.ScanIndexes)) + for idx, index := range plan.Select.ScanIndexes { slots[idx] = v.FieldByIndex(index).Addr().Interface() } return db.QueryRow(query, args...).Scan(slots...) |
