Make migrations compatible with postgres
This commit is contained in:
parent
ba6afa50e8
commit
9d92161430
6 changed files with 94 additions and 85 deletions
|
|
@ -5,9 +5,9 @@ class UniqueIndexOnProfile < ActiveRecord::Migration
|
|||
["id", "created_at", "updated_at"].each{|n| columns.delete(n)}
|
||||
|
||||
sql = <<-SQL
|
||||
SELECT `profiles`.person_id FROM `profiles`
|
||||
SELECT profiles.person_id FROM profiles
|
||||
GROUP BY #{columns.join(',')}
|
||||
HAVING COUNT(*)>1 AND `profiles`.person_id IS NOT NULL;
|
||||
HAVING COUNT(*)>1 AND profiles.person_id IS NOT NULL;
|
||||
SQL
|
||||
result = conn.execute(sql)
|
||||
duplicate_person_ids = result.to_a.flatten
|
||||
|
|
@ -15,13 +15,13 @@ class UniqueIndexOnProfile < ActiveRecord::Migration
|
|||
undesired_profile_ids = []
|
||||
duplicate_person_ids.each do |person_id|
|
||||
profile_ids = conn.execute("
|
||||
SELECT `profiles`.id FROM `profiles`
|
||||
WHERE `profiles`.person_id = #{person_id};").to_a.flatten
|
||||
SELECT profiles.id FROM profiles
|
||||
WHERE profiles.person_id = #{person_id};").to_a.flatten
|
||||
profile_ids.pop
|
||||
undesired_profile_ids.concat(profile_ids)
|
||||
end
|
||||
conn.execute("DELETE FROM `profiles`
|
||||
WHERE `profiles`.id IN (#{undesired_profile_ids.join(",")});") unless undesired_profile_ids.empty?
|
||||
conn.execute("DELETE FROM profiles
|
||||
WHERE profiles.id IN (#{undesired_profile_ids.join(",")});") unless undesired_profile_ids.empty?
|
||||
|
||||
remove_index :profiles, :person_id
|
||||
add_index :profiles, :person_id, :unique => true
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ class AddInvitationServiceAndInvitationIdentifierToUser < ActiveRecord::Migratio
|
|||
add_column(:users, :invitation_service, :string)
|
||||
add_column(:users, :invitation_identifier, :string)
|
||||
|
||||
execute("UPDATE `users` SET invitation_service='email', invitation_identifier= email WHERE invitation_token IS NOT NULL;")
|
||||
execute("UPDATE users SET invitation_service='email', invitation_identifier= email WHERE invitation_token IS NOT NULL;")
|
||||
end
|
||||
|
||||
def self.down
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ class AddContactsVisible < ActiveRecord::Migration
|
|||
add_index :aspects, [:user_id, :contacts_visible]
|
||||
|
||||
ActiveRecord::Base.connection.execute <<-SQL
|
||||
UPDATE `aspects`
|
||||
UPDATE aspects
|
||||
SET contacts_visible = false
|
||||
WHERE contacts_visible IS NULL
|
||||
SQL
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ class NotificationMultiplePeople < ActiveRecord::Migration
|
|||
add_index :notification_actors, [:notification_id, :person_id] , :unique => true
|
||||
add_index :notification_actors, :person_id ## if i am not mistaken we don't need this one because we won't query person.notifications
|
||||
|
||||
note_ids = execute('select id from notifications').to_a
|
||||
unless note_ids.empty?
|
||||
#make the notification actors table
|
||||
execute "INSERT INTO notification_actors (notification_id, person_id) " +
|
||||
" SELECT id , actor_id " +
|
||||
|
|
@ -55,6 +57,7 @@ class NotificationMultiplePeople < ActiveRecord::Migration
|
|||
"notifications.target_id = keep_delete.target_id AND "+
|
||||
"notifications.recipient_id = keep_delete.recipient_id AND "+
|
||||
"notifications.action = keep_delete.action"
|
||||
end
|
||||
|
||||
|
||||
remove_column :notifications, :actor_id
|
||||
|
|
|
|||
|
|
@ -1,16 +1,18 @@
|
|||
class FixTargetOnNotification < ActiveRecord::Migration
|
||||
def self.up
|
||||
note_ids = execute('select id from notifications').to_a
|
||||
unless note_ids.empty?
|
||||
execute("UPDATE notifications " +
|
||||
"SET target_type='Post' " +
|
||||
"WHERE action = 'comment_on_post' OR action = 'also_commented'")
|
||||
"SET target_type='Post' " +
|
||||
"WHERE action = 'comment_on_post' OR action = 'also_commented'")
|
||||
|
||||
execute("UPDATE notifications " +
|
||||
"SET target_type='Request' " +
|
||||
"WHERE action = 'new_request' OR action = 'request_accepted'")
|
||||
"SET target_type='Request' " +
|
||||
"WHERE action = 'new_request' OR action = 'request_accepted'")
|
||||
|
||||
execute("UPDATE notifications " +
|
||||
"SET target_type='Mention' " +
|
||||
"WHERE action = 'mentioned'")
|
||||
"SET target_type='Mention' " +
|
||||
"WHERE action = 'mentioned'")
|
||||
|
||||
execute("create temporary table t1 "+
|
||||
"(select notifications.id as n_id " +
|
||||
|
|
@ -20,6 +22,7 @@ class FixTargetOnNotification < ActiveRecord::Migration
|
|||
|
||||
execute("DELETE notifications.* FROM notifications, t1 WHERE notifications.id = t1.n_id")
|
||||
end
|
||||
end
|
||||
|
||||
def self.down
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
class UniqueIndexPostVisibilities < ActiveRecord::Migration
|
||||
def self.up
|
||||
visibility_ids = execute('select id from post_visibilities').to_a
|
||||
unless visibility_ids.empty?
|
||||
sql = <<-SQL
|
||||
SELECT `post_visibilities`.post_id, `post_visibilities`.aspect_id FROM `post_visibilities`
|
||||
GROUP BY post_id, aspect_id
|
||||
|
|
@ -24,6 +26,7 @@ class UniqueIndexPostVisibilities < ActiveRecord::Migration
|
|||
|
||||
new_result = execute(sql)
|
||||
raise "Not all violating visibilities deleted, try migrating again if this is the first occurence" unless new_result.to_a.empty?
|
||||
end
|
||||
|
||||
remove_index :post_visibilities, [:aspect_id, :post_id]
|
||||
add_index :post_visibilities, [:aspect_id, :post_id], :unique => true
|
||||
|
|
|
|||
Loading…
Reference in a new issue