mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: multiple use invite links (#9813)
This commit is contained in:
17
db/migrate/20200428102014_add_bulk_invite_link_to_invites.rb
Normal file
17
db/migrate/20200428102014_add_bulk_invite_link_to_invites.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AddBulkInviteLinkToInvites < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :invites, :max_redemptions_allowed, :integer, null: false, default: 1
|
||||
add_column :invites, :redemption_count, :integer, null: false, default: 0
|
||||
add_column :invites, :expires_at, :datetime, null: true
|
||||
|
||||
invite_expiry_days = DB.query_single("SELECT value FROM site_settings WHERE name = 'invite_expiry_days'").first
|
||||
invite_expiry_days = 30 if invite_expiry_days.blank?
|
||||
execute <<~SQL
|
||||
UPDATE invites SET expires_at = updated_at + INTERVAL '#{invite_expiry_days} days'
|
||||
SQL
|
||||
|
||||
change_column :invites, :expires_at, :datetime, null: false
|
||||
end
|
||||
end
|
||||
15
db/migrate/20200430072846_create_invited_users.rb
Normal file
15
db/migrate/20200430072846_create_invited_users.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class CreateInvitedUsers < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
create_table :invited_users do |t|
|
||||
t.integer :user_id
|
||||
t.integer :invite_id, null: false
|
||||
t.datetime :redeemed_at
|
||||
t.timestamps null: false
|
||||
end
|
||||
|
||||
add_index :invited_users, :invite_id
|
||||
add_index :invited_users, [:user_id, :invite_id], unique: true, where: 'user_id IS NOT NULL'
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,26 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class MigrateInviteRedeemedDataToInvitedUsers < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
%i{user_id redeemed_at}.each do |column|
|
||||
Migration::ColumnDropper.mark_readonly(:invites, column)
|
||||
end
|
||||
|
||||
execute <<~SQL
|
||||
INSERT INTO invited_users (
|
||||
user_id,
|
||||
invite_id,
|
||||
redeemed_at,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
SELECT user_id, id, redeemed_at, created_at, updated_at
|
||||
FROM invites
|
||||
WHERE user_id IS NOT NULL AND redeemed_at IS NOT NULL
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrreversibleMigration
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user