def change_task(self): # Task in elixir did not generate a row_type for use as discriminator self.schedule('alter', op.add_column, 'task', Column('row_type', String(40))) # Task in elixir's queue_id was NULLABLE, but should not be (Tasks HAVE to be in a Queue now) self.schedule('alter', op.alter_column, 'task', 'queue_id', nullable=True) # Rename of relationship foreign key Task.reserved_by_id -> reserved_by_party_id old_name = 'reserved_by_id' new_name = 'reserved_by_party_id' self.schedule('drop_fk', op.drop_constraint, '%s_%s_fk' % ('task', old_name), 'task') self.schedule('alter', op.alter_column, 'task', old_name, new_column_name=new_name) self.schedule('create_fk', op.create_foreign_key, fk_name('task', new_name, 'party'), 'task', 'party', [new_name], ['id']) self.schedule('drop_pk', op.drop_index, ix_name('task', 'reserved_by_id')) self.schedule('indexes', op.create_index, ix_name('task', 'reserved_by_party_id'), 'task', ['reserved_by_party_id'])
def schedule_upgrades(self): self.schedule('alter', op.create_table, 'loginsession', Column('id', Integer(), primary_key=True, nullable=False), Column('row_type', String(length=40)), Column('account_id', Integer(), ForeignKey('systemaccount.id')), Column('user_session_id', Integer(), ForeignKey('usersession.id'))) self.schedule('indexes', op.create_index, ix_name('loginsession', 'account_id'), 'loginsession', ['account_id']) self.schedule('indexes', op.create_index, ix_name('loginsession', 'user_session_id'), 'loginsession', ['user_session_id'])
def schedule_upgrades(self): self.orm_control.assert_dialect(self, 'postgresql') self.schedule('alter', op.create_table, 'loginsession', Column('id', Integer(), primary_key=True, nullable=False), Column('row_type', String(length=40)), Column('account_id', Integer(), ForeignKey('systemaccount.id')), Column('user_session_id', Integer(), ForeignKey('usersession.id', ondelete='CASCADE'))) self.schedule('indexes', op.create_index, ix_name('loginsession', 'account_id'), 'loginsession', ['account_id']) self.schedule('indexes', op.create_index, ix_name('loginsession', 'user_session_id'), 'loginsession', ['user_session_id'])
def change_session_scoped(self, table_name): """Rename the old session_id relationship on @session_scoped things to user_session_id, and update the foreign keys and indexes accordingly. :arg table_name: The name of the table underlying the @session_scoped class. """ old_name = 'session_id' new_name = 'user_session_id' self.schedule('drop_fk', op.drop_constraint, '%s_%s_fk' % (table_name, old_name), table_name) self.schedule('alter', op.alter_column, table_name, old_name, new_column_name=new_name) self.schedule('create_fk', op.create_foreign_key, fk_name(table_name, new_name, 'usersession'), table_name, 'usersession', [new_name], ['id'], ondelete='CASCADE') self.schedule('drop_pk', op.drop_index, ix_name(table_name, old_name)) self.schedule('indexes', op.create_index, ix_name(table_name, new_name), table_name, [new_name])
def move_party_systemaccount_relationship(self): # A SystemAccount now points to its 'owner' (a Party) instead of Party which previously pointed to a SystemAccount # TODO?:Assert no rows for : select count(*) from party group by system_account_party_id having count(*) > 1; self.schedule('drop_fk', op.drop_constraint, 'party_system_account_id_fk', 'party') self.schedule('alter', op.add_column, 'systemaccount', Column('owner_party_id', Integer)) migrate_data = 'UPDATE systemaccount SET owner_party_id = PARTY.id FROM PARTY WHERE PARTY.system_account_id = systemaccount.id' self.schedule('data', op.execute, migrate_data) self.schedule('cleanup', op.drop_column, 'party', 'system_account_id') self.schedule('create_fk', op.create_foreign_key, fk_name('systemaccount', 'owner_party_id', 'party'), 'systemaccount', 'party', ['owner_party_id'], ['id']) self.schedule('drop_pk', op.drop_index, ix_name('party','system_account_id'))
def schedule_upgrades(self): self.schedule('drop_pk', op.drop_index, ix_name('usersession', 'account_id')) self.schedule('alter', op.drop_column, 'usersession', 'account_id') self.schedule('alter', op.add_column, 'usersession', Column('salt', String(40), nullable=False)) self.schedule('alter', op.add_column, 'usersession', Column('secure_salt', String(40), nullable=False)) self.schedule('alter', op.drop_table, 'webusersession') self.schedule('data', op.execute, 'delete from usersession') self.schedule( 'drop_fk', op.drop_constraint, fk_name('sessiondata', 'web_session_id', 'webusersession'), 'sessiondata') self.schedule('create_fk', op.create_foreign_key, fk_name('sessiondata', 'web_session_id', 'usersession'), 'sessiondata', 'usersession', ['web_session_id'], ['id'], ondelete='CASCADE')