Class: SAAL::DBStore

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/dbstore.rb

Instance Method Summary collapse

Constructor Details

#initialize(conffile = SAAL::DBCONF) ⇒ DBStore

Returns a new instance of DBStore.



4
5
6
7
8
# File 'lib/dbstore.rb', line 4

def initialize(conffile=SAAL::DBCONF)
  @dbopts = YAML::load(File.new(conffile))
  @db = nil
  db_initialize
end

Instance Method Details

#average(sensor, from, to) ⇒ Object



31
32
33
# File 'lib/dbstore.rb', line 31

def average(sensor, from, to)     
  db_range("AVG", sensor, from, to)
end

#db_initializeObject



10
11
12
13
14
15
16
17
# File 'lib/dbstore.rb', line 10

def db_initialize
  db_query "CREATE TABLE IF NOT EXISTS sensor_reads
               (sensor VARCHAR(100), 
                date INT, 
                value FLOAT,
                INDEX USING HASH (sensor),
                INDEX USING BTREE (date))"
end

#db_wipeObject



19
20
21
# File 'lib/dbstore.rb', line 19

def db_wipe
  db_query "DROP TABLE sensor_reads"
end

#eachObject



42
43
44
45
46
47
48
49
# File 'lib/dbstore.rb', line 42

def each
  db_query "SELECT sensor,date,value FROM sensor_reads" do |r|
    r.num_rows.times do
      row = r.fetch_row
      yield [row[0],row[1].to_i, row[2].to_f]
    end
  end
end

#maximum(sensor, from, to) ⇒ Object



38
39
40
# File 'lib/dbstore.rb', line 38

def maximum(sensor, from, to)     
  db_range("MAX", sensor, from, to)
end

#minimum(sensor, from, to) ⇒ Object



35
36
37
# File 'lib/dbstore.rb', line 35

def minimum(sensor, from, to)     
  db_range("MIN", sensor, from, to)
end

#write(sensor, date, value) ⇒ Object

Raises:

  • (ArgumentError)


23
24
25
26
27
28
29
# File 'lib/dbstore.rb', line 23

def write(sensor, date, value)
  raise ArgumentError, "Trying to store an empty sensor read" if !value
  raise ArgumentError, "Trying to store an empty timestamp" if !date
  raise ArgumentError, "Trying to store a timestamp <= 0" if date <= 0
  db_query "INSERT INTO sensor_reads VALUES
              ('"+db_quote(sensor.to_s)+"',"+date.to_s+","+value.to_s+")"
end