30 lines
820 B
Ruby
30 lines
820 B
Ruby
# frozen_string_literal: true
|
|
|
|
class CreateUserBans < ActiveRecord::Migration[5.2]
|
|
def up
|
|
create_table :user_bans do |t|
|
|
t.bigint :user_id
|
|
t.string :reason
|
|
t.datetime :expires_at
|
|
t.bigint :banned_by_id, nullable: true
|
|
|
|
t.timestamps
|
|
end
|
|
|
|
# foxy's functional fqueries
|
|
execute "INSERT INTO user_bans
|
|
(user_id, reason, expires_at, created_at, updated_at)
|
|
SELECT users.id, users.ban_reason, users.banned_until, users.updated_at, NOW() FROM users
|
|
WHERE banned_until IS NOT NULL AND NOT permanently_banned;"
|
|
|
|
execute "INSERT INTO user_bans
|
|
(user_id, reason, expires_at, created_at, updated_at)
|
|
SELECT users.id, users.ban_reason, NULL, users.updated_at, NOW() FROM users
|
|
WHERE permanently_banned;"
|
|
end
|
|
|
|
def down
|
|
drop_table :user_bans
|
|
end
|
|
end
|