about summary refs log tree commit diff
path: root/db
diff options
context:
space:
mode:
authorabcang <abcang1015@gmail.com>2019-09-27 22:24:13 +0900
committerEugen Rochko <eugen@zeonfederated.com>2019-09-27 15:24:13 +0200
commit07b057eabb9cc923aa7fc6bb851084af048ed5d2 (patch)
tree1ae743f8e1e8c828dc9da82de489da31bb7e28c9 /db
parent059945c97cb9a9f3cbddda729f499b44800bdc68 (diff)
Validate Web::PushSubscription (#11971)
Diffstat (limited to 'db')
-rw-r--r--db/post_migrate/20190927124642_remove_invalid_web_push_subscription.rb18
-rw-r--r--db/schema.rb2
2 files changed, 19 insertions, 1 deletions
diff --git a/db/post_migrate/20190927124642_remove_invalid_web_push_subscription.rb b/db/post_migrate/20190927124642_remove_invalid_web_push_subscription.rb
new file mode 100644
index 000000000..c2397476a
--- /dev/null
+++ b/db/post_migrate/20190927124642_remove_invalid_web_push_subscription.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+class RemoveInvalidWebPushSubscription < ActiveRecord::Migration[5.2]
+  disable_ddl_transaction!
+
+  def up
+    invalid_web_push_subscriptions = Web::PushSubscription.where(endpoint: '')
+                                                          .or(Web::PushSubscription.where(key_p256dh: ''))
+                                                          .or(Web::PushSubscription.where(key_auth: ''))
+                                                          .preload(:session_activation)
+    invalid_web_push_subscriptions.find_each do |web_push_subscription|
+      web_push_subscription.session_activation&.update!(web_push_subscription_id: nil)
+      web_push_subscription.destroy!
+    end
+  end
+
+  def down; end
+end
diff --git a/db/schema.rb b/db/schema.rb
index fabeb16f3..8eeaf48a0 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2019_09_17_213523) do
+ActiveRecord::Schema.define(version: 2019_09_27_124642) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"