From e594c0bfab8db0e800f75953cba9e42574ec27c8 Mon Sep 17 00:00:00 2001 From: Tianyi Cui Date: Sun, 14 Nov 2010 11:45:31 +0800 Subject: [PATCH] database --- lib/minisql/record.rb | 12 ++++++++++-- spec/database_spec.rb | 6 ++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/minisql/record.rb b/lib/minisql/record.rb index 60a19a2..4471dab 100644 --- a/lib/minisql/record.rb +++ b/lib/minisql/record.rb @@ -49,8 +49,16 @@ def col_name_to_num name end def where_functor where - return lambda {|x| true}# if where==nil - raise "Not implemented" + return lambda {|x| true} if where==nil + lambda do |l| + where.each do |w| + v0 = l[col_name_to_num(w[1])] + v1 = w[2] + exp = "#{v0.inspect}#{w[0]}#{v1.inspect}" + return false unless eval(exp) + end + true + end end def serialize item diff --git a/spec/database_spec.rb b/spec/database_spec.rb index e333ad1..8158da9 100644 --- a/spec/database_spec.rb +++ b/spec/database_spec.rb @@ -105,11 +105,13 @@ it 'can delete specified data from table' do insert_sample_data - insert_sample_data [0, 1.0, 'another one'] + insert_sample_data [0, 1.0, 'another one '] @db.delete_from :tbl do column[:int_col] < 1 end - @db.select['*'].from(:tbl).to_a.should == [sample_data] + result = @db.select['*'].from(:tbl).to_a + result.size.should == 1 + record_equal result[0], sample_data end end