0
0
Fork 0

Remove IP tracking columns from users table (#16409)

This commit is contained in:
Eugen Rochko 2022-01-16 13:23:50 +01:00 committed by GitHub
parent b52fdb4c6f
commit 8e84ebf0cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 141 additions and 75 deletions

View file

@ -0,0 +1,5 @@
class CreateUserIps < ActiveRecord::Migration[6.1]
def change
create_view :user_ips
end
end

View file

@ -0,0 +1,12 @@
# frozen_string_literal: true
class RemoveCurrentSignInIpFromUsers < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def change
safety_assured do
remove_column :users, :current_sign_in_ip, :inet
remove_column :users, :last_sign_in_ip, :inet
end
end
end

View file

@ -923,8 +923,6 @@ ActiveRecord::Schema.define(version: 2021_12_13_040746) do
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.inet "current_sign_in_ip"
t.inet "last_sign_in_ip"
t.boolean "admin", default: false, null: false
t.string "confirmation_token"
t.datetime "confirmed_at"
@ -1120,6 +1118,28 @@ ActiveRecord::Schema.define(version: 2021_12_13_040746) do
SQL
add_index "instances", ["domain"], name: "index_instances_on_domain", unique: true
create_view "user_ips", sql_definition: <<-SQL
SELECT t0.user_id,
t0.ip,
max(t0.used_at) AS used_at
FROM ( SELECT users.id AS user_id,
users.sign_up_ip AS ip,
users.created_at AS used_at
FROM users
WHERE (users.sign_up_ip IS NOT NULL)
UNION ALL
SELECT session_activations.user_id,
session_activations.ip,
session_activations.updated_at
FROM session_activations
UNION ALL
SELECT login_activities.user_id,
login_activities.ip,
login_activities.created_at
FROM login_activities
WHERE (login_activities.success = true)) t0
GROUP BY t0.user_id, t0.ip;
SQL
create_view "account_summaries", materialized: true, sql_definition: <<-SQL
SELECT accounts.id AS account_id,
mode() WITHIN GROUP (ORDER BY t0.language) AS language,

26
db/views/user_ips_v01.sql Normal file
View file

@ -0,0 +1,26 @@
SELECT
user_id,
ip,
max(used_at) AS used_at
FROM (
SELECT
id AS user_id,
sign_up_ip AS ip,
created_at AS used_at
FROM users
WHERE sign_up_ip IS NOT NULL
UNION ALL
SELECT
user_id,
ip,
updated_at
FROM session_activations
UNION ALL
SELECT
user_id,
ip,
created_at
FROM login_activities
WHERE success = 't'
) AS t0
GROUP BY user_id, ip