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