Row.java

package org.itsallcode.jdbc.resultset.generic;

import java.util.List;

/**
 * Represents a generic row from a result set.
 * 
 * @param rowIndex     row index (zero based)
 * @param columns      column metadata
 * @param columnValues values for each column
 */
public record Row(int rowIndex, List<ColumnMetaData> columns, List<ColumnValue> columnValues) {

    /**
     * Get the value at a given column index (zero based).
     * 
     * @param columnIndex column index (zero based)
     * @return column value
     */
    public ColumnValue get(final int columnIndex) {
        return columnValues.get(columnIndex);
    }

    /**
     * Get the value at a given column index (zero based) converted to the given
     * type.
     * 
     * @param columnIndex column index (zero based)
     * @param type        expected type
     * @param <T>         expected type
     * @return column value
     */
    public <T> T get(final int columnIndex, final Class<T> type) {
        return get(columnIndex).getValue(type);
    }
}