diff --git a/spec/result_set_spec.cr b/spec/result_set_spec.cr index f1cc306..56ad396 100644 --- a/spec/result_set_spec.cr +++ b/spec/result_set_spec.cr @@ -41,5 +41,19 @@ describe DB::ResultSet do end the_rs.closed?.should be_true end + + it "should enumerate columns" do + cols = [] of String + + with_dummy do |db| + db.query "3,4 1,2" do |rs| + rs.each_column do |col, col_type| + cols << col + col_type.should eq(Slice(UInt8)) + end + end + end + + cols.should eq(["c0", "c1"]) end end diff --git a/src/db/result_set.cr b/src/db/result_set.cr index 1b048ae..a739eac 100644 --- a/src/db/result_set.cr +++ b/src/db/result_set.cr @@ -41,6 +41,13 @@ module DB end end + # Iterates over all the columns + def each_column + column_count.times do |x| + yield column_name(x), column_type(x) + end + end + # Move the next row in the result. # Return `false` if no more rows are available. # See `#each`