From 5773faaa5c946d8a0b01908acea7ab1a8f8a7af2 Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Mon, 28 Mar 2016 19:29:15 -0300 Subject: [PATCH] Enumerate columns in result_set --- spec/result_set_spec.cr | 14 ++++++++++++++ src/db/result_set.cr | 7 +++++++ 2 files changed, 21 insertions(+) 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`