@@ -10,6 +10,7 @@ class Agent < ActiveRecord::Base |
||
10 | 10 |
include AssignableTypes |
11 | 11 |
include MarkdownClassAttributes |
12 | 12 |
include JSONSerializedField |
13 |
+ include RDBMSFunctions |
|
13 | 14 |
|
14 | 15 |
markdown_class_attributes :description, :event_description |
15 | 16 |
|
@@ -127,7 +128,7 @@ class Agent < ActiveRecord::Base |
||
127 | 128 |
if keep_events_for == 0 |
128 | 129 |
events.update_all :expires_at => nil |
129 | 130 |
else |
130 |
- events.update_all "expires_at = DATE_ADD(`created_at`, INTERVAL #{keep_events_for.to_i} DAY)" |
|
131 |
+ events.update_all "expires_at = " + rdbms_date_add("created_at", "DAY", keep_events_for.to_i) |
|
131 | 132 |
end |
132 | 133 |
end |
133 | 134 |
|
@@ -265,8 +266,8 @@ class Agent < ActiveRecord::Base |
||
265 | 266 |
|
266 | 267 |
agents_to_events = {} |
267 | 268 |
Agent.connection.select_rows(sql).each do |receiver_agent_id, source_agent_id, event_id| |
268 |
- agents_to_events[receiver_agent_id] ||= [] |
|
269 |
- agents_to_events[receiver_agent_id] << event_id |
|
269 |
+ agents_to_events[receiver_agent_id.to_i] ||= [] |
|
270 |
+ agents_to_events[receiver_agent_id.to_i] << event_id |
|
270 | 271 |
end |
271 | 272 |
|
272 | 273 |
event_ids = agents_to_events.values.flatten.uniq.compact |
@@ -21,6 +21,7 @@ test: |
||
21 | 21 |
socket: <%= ENV['DATABASE_SOCKET'] || ["/var/run/mysqld/mysqld.sock", "/opt/local/var/run/mysql5/mysqld.sock", "/tmp/mysql.sock"].find{ |path| File.exist? path } %> |
22 | 22 |
encoding: <%= ENV['DATABASE_ENCODING'] || "utf8" %> |
23 | 23 |
reconnect: <%= ENV['DATABASE_RECONNECT'] || "true" %> |
24 |
+ port: <%= ENV['DATABASE_PORT'] || "" %> |
|
24 | 25 |
pool: <%= ENV['DATABASE_POOL'] || "5" %> |
25 | 26 |
|
26 | 27 |
production: |
@@ -0,0 +1,13 @@ |
||
1 |
+module RDBMSFunctions |
|
2 |
+ def rdbms_date_add(source, unit, amount) |
|
3 |
+ adapter_type = connection.adapter_name.downcase.to_sym |
|
4 |
+ case adapter_type |
|
5 |
+ when :mysql, :mysql2 |
|
6 |
+ "DATE_ADD(`#{source}`, INTERVAL #{amount} #{unit})" |
|
7 |
+ when :postgresql |
|
8 |
+ "(#{source} + INTERVAL '#{amount} #{unit}')" |
|
9 |
+ else |
|
10 |
+ raise NotImplementedError, "Unknown adapter type '#{adapter_type}'" |
|
11 |
+ end |
|
12 |
+ end |
|
13 |
+end |