Class: SeapigDependency
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- SeapigDependency
- Defined in:
- app/models/seapig_dependency.rb
Constant Summary collapse
- OBJECT_PREFIX =
"Postgres::"
Class Method Summary collapse
-
.bump(*names) ⇒ Object
FIXME: mass upsert / PG 9.5.
- .version(name) ⇒ Object
- .versions(*names) ⇒ Object
Class Method Details
.bump(*names) ⇒ Object
FIXME: mass upsert / PG 9.5
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'app/models/seapig_dependency.rb', line 6 def self.bump(*names) #FIXME: mass upsert / PG 9.5 versions = {} self.transaction { names.map { |name| #FIXME: race value = self.find_by_sql(["UPDATE seapig_dependencies SET current_version = nextval('seapig_dependency_version_seq'), updated_at = now() WHERE name = ? RETURNING current_version", name]) value = self.find_by_sql(["INSERT INTO seapig_dependencies(name, current_version, reported_version, created_at, updated_at) VALUES (?,nextval('seapig_dependency_version_seq'),0,now(),now()) RETURNING current_version",name]) if value.size == 0 versions[SeapigDependency::OBJECT_PREFIX+name] = value[0].current_version } connection.instance_variable_get(:@connection).exec("NOTIFY seapig_dependency_changed") } versions end |
.version(name) ⇒ Object
20 21 22 |
# File 'app/models/seapig_dependency.rb', line 20 def self.version(name) self.versions(name)[SeapigDependency::OBJECT_PREFIX+name] end |
.versions(*names) ⇒ Object
25 26 27 |
# File 'app/models/seapig_dependency.rb', line 25 def self.versions(*names) self.find_by_sql(["SELECT names.name, COALESCE(sd.current_version,0) AS current_version FROM (SELECT unnest(ARRAY[?]) AS name) AS names LEFT OUTER JOIN seapig_dependencies AS sd ON names.name = sd.name", names]).map { |name| [SeapigDependency::OBJECT_PREFIX+name.name,name.current_version] }.to_h end |