X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d10a66b66edc088d33bad52aebd7cac0a6e9ce49..eb03fb3ad316a637f032f911af7d69950482ead3:/services/api/db/migrate/20140811184643_collection_use_regular_uuids.rb diff --git a/services/api/db/migrate/20140811184643_collection_use_regular_uuids.rb b/services/api/db/migrate/20140811184643_collection_use_regular_uuids.rb index fd9054c060..4f83ecab2c 100644 --- a/services/api/db/migrate/20140811184643_collection_use_regular_uuids.rb +++ b/services/api/db/migrate/20140811184643_collection_use_regular_uuids.rb @@ -3,7 +3,7 @@ class CollectionUseRegularUuids < ActiveRecord::Migration add_column :collections, :name, :string add_column :collections, :description, :string add_column :collections, :properties, :text - add_column :collections, :expire_time, :date + add_column :collections, :expires_at, :date remove_column :collections, :locator say_with_time "Step 1. Move manifest hashes into portable_data_hash field" do @@ -17,19 +17,22 @@ where link_class='name' and collections.uuid is null } links = ActiveRecord::Base.connection.select_all %{ select links.uuid, head_uuid, tail_uuid, links.name, -manifest_text, links.created_at, links.updated_at +manifest_text, links.created_at, links.modified_at, links.modified_by_client_uuid, links.modified_by_user_uuid #{from_clause} } links.each do |d| ActiveRecord::Base.connection.execute %{ -insert into collections (uuid, portable_data_hash, owner_uuid, name, manifest_text, created_at, updated_at) +insert into collections (uuid, portable_data_hash, owner_uuid, name, manifest_text, created_at, modified_at, modified_by_client_uuid, modified_by_user_uuid, updated_at) values (#{ActiveRecord::Base.connection.quote Collection.generate_uuid}, #{ActiveRecord::Base.connection.quote d['head_uuid']}, #{ActiveRecord::Base.connection.quote d['tail_uuid']}, #{ActiveRecord::Base.connection.quote d['name']}, #{ActiveRecord::Base.connection.quote d['manifest_text']}, #{ActiveRecord::Base.connection.quote d['created_at']}, -#{ActiveRecord::Base.connection.quote d['updated_at']}) +#{ActiveRecord::Base.connection.quote d['modified_at']}, +#{ActiveRecord::Base.connection.quote d['modified_by_client_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_by_user_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_at']}) } end ActiveRecord::Base.connection.execute "delete from links where links.uuid in (select links.uuid #{from_clause})" @@ -41,18 +44,21 @@ from links inner join collections on head_uuid=collections.portable_data_hash where link_class='permission' and links.name='can_read' and collections.uuid is null } links = ActiveRecord::Base.connection.select_all %{ -select links.uuid, head_uuid, tail_uuid, manifest_text, links.created_at, links.updated_at +select links.uuid, head_uuid, tail_uuid, manifest_text, links.created_at, links.modified_at #{from_clause} } links.each do |d| ActiveRecord::Base.connection.execute %{ -insert into collections (uuid, portable_data_hash, owner_uuid, manifest_text, created_at, updated_at) +insert into collections (uuid, portable_data_hash, owner_uuid, manifest_text, created_at, modified_at, modified_by_client_uuid, modified_by_user_uuid, updated_at) values (#{ActiveRecord::Base.connection.quote Collection.generate_uuid}, #{ActiveRecord::Base.connection.quote d['head_uuid']}, #{ActiveRecord::Base.connection.quote d['tail_uuid']}, #{ActiveRecord::Base.connection.quote d['manifest_text']}, #{ActiveRecord::Base.connection.quote d['created_at']}, -#{ActiveRecord::Base.connection.quote d['updated_at']}) +#{ActiveRecord::Base.connection.quote d['modified_at']}, +#{ActiveRecord::Base.connection.quote d['modified_by_client_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_by_user_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_at']}) } end ActiveRecord::Base.connection.execute "delete from links where links.uuid in (select links.uuid #{from_clause})" @@ -60,19 +66,22 @@ values (#{ActiveRecord::Base.connection.quote Collection.generate_uuid}, say_with_time "Step 4. Migrate remaining orphan collection objects" do links = ActiveRecord::Base.connection.select_all %{ -select portable_data_hash, owner_uuid, manifest_text, created_at, updated_at +select portable_data_hash, owner_uuid, manifest_text, created_at, modified_at from collections where uuid is null and portable_data_hash not in (select portable_data_hash from collections where uuid is not null) } links.each do |d| ActiveRecord::Base.connection.execute %{ -insert into collections (uuid, portable_data_hash, owner_uuid, manifest_text, created_at, updated_at) +insert into collections (uuid, portable_data_hash, owner_uuid, manifest_text, created_at, modified_at, modified_by_client_uuid, modified_by_user_uuid, updated_at) values (#{ActiveRecord::Base.connection.quote Collection.generate_uuid}, #{ActiveRecord::Base.connection.quote d['portable_data_hash']}, #{ActiveRecord::Base.connection.quote d['owner_uuid']}, #{ActiveRecord::Base.connection.quote d['manifest_text']}, #{ActiveRecord::Base.connection.quote d['created_at']}, -#{ActiveRecord::Base.connection.quote d['updated_at']}) +#{ActiveRecord::Base.connection.quote d['modified_at']}, +#{ActiveRecord::Base.connection.quote d['modified_by_client_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_by_user_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_at']}) } end end @@ -95,21 +104,24 @@ from links where head_uuid like '________________________________+%' and tail_uuid like '________________________________+%' and links.link_class = 'provenance' } links = ActiveRecord::Base.connection.select_all %{ -select links.uuid, head_uuid, tail_uuid, links.created_at, links.updated_at, links.owner_uuid +select links.uuid, head_uuid, tail_uuid, links.created_at, links.modified_at, links.modified_by_client_uuid, links.modified_by_user_uuid, links.owner_uuid #{from_clause} } links.each do |d| newuuid = Job.generate_uuid ActiveRecord::Base.connection.execute %{ -insert into jobs (uuid, script_parameters, output, running, success, created_at, updated_at, owner_uuid) +insert into jobs (uuid, script_parameters, output, running, success, created_at, modified_at, modified_by_client_uuid, modified_by_user_uuid, owner_uuid, updated_at) values (#{ActiveRecord::Base.connection.quote newuuid}, #{ActiveRecord::Base.connection.quote "---\ninput: "+d['tail_uuid']}, #{ActiveRecord::Base.connection.quote d['head_uuid']}, #{ActiveRecord::Base.connection.quote false}, #{ActiveRecord::Base.connection.quote true}, #{ActiveRecord::Base.connection.quote d['created_at']}, -#{ActiveRecord::Base.connection.quote d['updated_at']}, -#{ActiveRecord::Base.connection.quote d['owner_uuid']}) +#{ActiveRecord::Base.connection.quote d['modified_at']}, +#{ActiveRecord::Base.connection.quote d['modified_by_client_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_by_user_uuid']}, +#{ActiveRecord::Base.connection.quote d['owner_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_at']}) } end ActiveRecord::Base.connection.execute "delete from links where links.uuid in (select links.uuid #{from_clause})" @@ -122,12 +134,12 @@ where collections.uuid is not null } links = ActiveRecord::Base.connection.select_all %{ select links.uuid, collections.uuid as collectionuuid, tail_uuid, link_class, links.properties, -links.name, links.created_at, links.updated_at, links.owner_uuid +links.name, links.created_at, links.modified_at, links.modified_by_client_uuid, links.modified_by_user_uuid, links.owner_uuid #{from_clause} } links.each do |d| ActiveRecord::Base.connection.execute %{ -insert into links (uuid, head_uuid, tail_uuid, link_class, name, properties, created_at, updated_at, owner_uuid) +insert into links (uuid, head_uuid, tail_uuid, link_class, name, properties, created_at, modified_at, modified_by_client_uuid, modified_by_user_uuid, owner_uuid, updated_at) values (#{ActiveRecord::Base.connection.quote Link.generate_uuid}, #{ActiveRecord::Base.connection.quote d['collectionuuid']}, #{ActiveRecord::Base.connection.quote d['tail_uuid']}, @@ -135,8 +147,11 @@ values (#{ActiveRecord::Base.connection.quote Link.generate_uuid}, #{ActiveRecord::Base.connection.quote d['name']}, #{ActiveRecord::Base.connection.quote d['properties']}, #{ActiveRecord::Base.connection.quote d['created_at']}, -#{ActiveRecord::Base.connection.quote d['updated_at']}, -#{ActiveRecord::Base.connection.quote d['owner_uuid']}) +#{ActiveRecord::Base.connection.quote d['modified_at']}, +#{ActiveRecord::Base.connection.quote d['modified_by_client_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_by_user_uuid']}, +#{ActiveRecord::Base.connection.quote d['owner_uuid']}, +#{ActiveRecord::Base.connection.quote d['modified_at']}) } end ActiveRecord::Base.connection.execute "delete from links where links.uuid in (select links.uuid #{from_clause})" @@ -160,6 +175,6 @@ where head_uuid like '________________________________+%' or tail_uuid like '___ end def down - # Not gonna happen. + raise ActiveRecord::IrreversibleMigration, "Can't downmigrate changes to collections and links without potentially losing data." end end