def pytest_runtest_teardown(): from personalwebpageapi.models import db migrations_path = f'{os.getcwd()}/migrations' repository = DatabaseMigrationRepository( db, 'migrations', ) migrator = Migrator(repository, db) if not migrator.repository_exists(): repository.create_repository() migrator.set_connection(db.get_default_connection()) migrator.reset(migrations_path)
class Migrations(HasColoredCommands): def __init__(self, connection=None): self._ran = [] self._notes = [] from config import database database_dict = database.DB self.repository = DatabaseMigrationRepository(database.DB, 'migrations') self.migrator = Migrator(self.repository, database.DB) if not connection or connection == 'default': connection = database.DATABASES['default'] self.migrator.set_connection(connection) if not self.repository.repository_exists(): self.repository.create_repository() from wsgi import container self.migration_directories = ['databases/migrations'] for key, value in container.providers.items(): if isinstance(key, str) and 'MigrationDirectory' in key: self.migration_directories.append(value) try: add_venv_site_packages() except ImportError: self.comment( 'This command must be ran inside of the root of a Masonite project directory' ) def run(self): for directory in self.migration_directories: try: if len(self.migration_directories) > 1: self.info('Migrating: {}'.format(directory)) self.migrator.run(directory) self._ran.append(self.repository.get_ran()) self._notes = self.migrator._notes except Exception as e: self.danger(str(e)) return self def rollback(self): for directory in self.migration_directories: try: if len(self.migration_directories) > 1: self.info('Migrating: {}'.format(directory)) self.migrator.rollback(directory) self._ran.append(self.repository.get_ran()) self._notes = self.migrator._notes except Exception as e: self.danger(str(e)) return self def refresh(self): self.run() self.rollback() def reset(self): for directory in self.migration_directories: try: if len(self.migration_directories) > 1: self.info('Migrating: {}'.format(directory)) self.migrator.reset(directory) self._ran.append(self.repository.get_ran()) self._notes = self.migrator._notes except Exception as e: self.danger(str(e)) return self def ran(self): return self._ran