28 lines
808 B
Ruby
28 lines
808 B
Ruby
|
class AddTrustLevelLocksToUsers < ActiveRecord::Migration[5.1]
|
||
|
def up
|
||
|
add_column :users, :group_locked_trust_level, :integer, null: true
|
||
|
add_column :users, :manual_locked_trust_level, :integer, null: true
|
||
|
|
||
|
execute <<~SQL
|
||
|
UPDATE users SET manual_locked_trust_level = trust_level WHERE trust_level_locked
|
||
|
SQL
|
||
|
|
||
|
execute <<~SQL
|
||
|
UPDATE users SET group_locked_trust_level = x.tl
|
||
|
FROM users AS u
|
||
|
INNER JOIN (
|
||
|
SELECT gu.user_id, MAX(g.grant_trust_level) AS tl
|
||
|
FROM group_users AS gu
|
||
|
INNER JOIN groups AS g ON gu.group_id = g.id
|
||
|
WHERE g.grant_trust_level IS NOT NULL
|
||
|
GROUP BY gu.user_id
|
||
|
) AS x ON x.user_id = u.id
|
||
|
WHERE users.id = u.id
|
||
|
SQL
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
raise ActiveRecord::IrreversibleMigration
|
||
|
end
|
||
|
end
|