X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/5e90b569db1b0f09063d1eed0aada7a513b60dcb..69abc1310245adab250083aafc015a716a884a93:/app/models/changeset.rb diff --git a/app/models/changeset.rb b/app/models/changeset.rb index 137de18fd..e6bde19a5 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -72,7 +72,7 @@ class Changeset < ApplicationRecord # note that this may not be a hard limit - due to timing changes and # concurrency it is possible that some changesets may be slightly # longer than strictly allowed or have slightly more changes in them. - ((closed_at > Time.now.utc) && (num_changes <= MAX_ELEMENTS)) + (closed_at > Time.now.utc) && (num_changes <= MAX_ELEMENTS) end def set_closed_time_now @@ -130,6 +130,8 @@ class Changeset < ApplicationRecord def update_bbox!(bbox_update) bbox.expand!(bbox_update) + raise OSM::APISizeLimitExceeded if bbox.linear_size > size_limit + # update active record. rails 2.1's dirty handling should take care of # whether this object needs saving or not. self.min_lon, self.min_lat, self.max_lon, self.max_lat = @bbox.to_a.collect(&:round) if bbox.complete? @@ -213,4 +215,22 @@ class Changeset < ApplicationRecord save_with_tags! end + + def subscribe(user) + subscribers << user + end + + def unsubscribe(user) + subscribers.delete(user) + end + + def subscribed?(user) + subscribers.exists?(user.id) + end + + def size_limit + @size_limit ||= ActiveRecord::Base.connection.select_value( + "SELECT api_size_limit($1)", "api_size_limit", [user_id] + ) + end end