lib/dev/Database.rb in dev-1.0.147 vs lib/dev/Database.rb in dev-1.0.148

- old
+ new

@@ -27,28 +27,83 @@ def initialize filename=Dev::Database.filename table_names=Dev::Database.get_table_names(filename) @db = SQLite3::Database.new filename @db.execute("create table Branches(Name text,Uri text,UNIQUE(Name));") if !table_names.include? "Branches" + + columns="" + [:uri,:revision,:dir,:user,:machine,:ruby_version,:ruby_platform,:cmd,:status,:start_time,:end_time,:elapsed,:timeout,:timed_out,:output,:error].each { |s| + columns="#{columns}," if columns.length > 0 + columns="#{columns}#{s.to_s} text" + } + @db.execute("create table Results(#{columns});") if ! table_names.include? "Results" end def set_branch_uri(name,uri) @db.execute("insert or replace into Branches (Name,Uri) VALUES ('#{name}','#{uri}');") end - def get_branch_uri(name,uri) + def add_result(h) + columns="" + values="" + [:uri,:revision,:dir,:user,:machine,:ruby_version,:ruby_platform,:cmd,:status,:start_time,:end_time,:elapsed,:timeout,:timed_out,:output,:error].each { |s| + sval="" + sval=h[s].to_s if h.has_key?(s) + sval.gsub("'","''") # need to escape single quotes for sqlite + columns="#{columns}," if columns.length > 0 + values="#{values}," if values.length > 0 + columns="#{columns}#{s.to_s}" + values="#{values}'#{sval}'" + } + #puts "insert or replace into Results (#{columns}) VALUES (#{values});" + @db.execute("insert or replace into Results (#{columns}) VALUES (#{values});") + end + + def get_results(where_hash) + array=Array.new + where="" + where_hash.each{ |k,v| + sval=v.to_s + sval.gsub("'","''") # need to escape single quotes for sqlite + where="#{where} AND " if where.length > 0 + where="#{where}#{k.to_s}='#{sval}'" + } + + columns="" + [:uri,:revision,:dir,:user,:machine,:ruby_version,:ruby_platform,:cmd,:status,:start_time,:end_time,:elapsed,:timeout,:timed_out,:output,:error].each { |s| + columns="#{columns}," if columns.length > 0 + columns="#{columns}#{s.to_s}" + } + + + @db.execute("select #{columns} from Results where #{where};") do |row| + h=Hash.new + index = 0 + [:uri,:revision,:dir,:user,:machine,:ruby_version,:ruby_platform,:cmd,:status,:start_time,:end_time,:elapsed,:timeout,:timed_out,:output,:error].each { |s| + #puts "row[#{index}].to_s=#{row[index].to_s}" + h[s]=row[index].to_s + index=index+1 + } + array << h if !h.empty? + end + + return array + end + + def get_branch_uri(name) + uri="" @db.execute("select Uri from Branches where Name='#{name}';") do |row| - return row[0] + uri=eval(row[0].to_s)[0] end - return "" + return uri end def find_branches(pattern) names=Array.new sql="select Name from Branches where Name LIKE '#{pattern}';" sql="select Name from Branches;" if pattern.nil? || pattern.length==0 @db.execute(sql) do |row| - names << row[0] + names << row[0] if(row[0].length > 0) end return names end end # class Database end # module Dev \ No newline at end of file