def handle(self): sys.path.append(os.getcwd()) try: add_venv_site_packages() from wsgi import container except ImportError: self.comment( 'This command must be ran inside of the root of a Masonite project directory' ) # Get any migration files from the Service Container migration_directory = ['databases/migrations'] for key, value in container.providers.items(): if 'MigrationDirectory' in key: migration_directory.append(value) # Load in the Orator migration system from orator.migrations import Migrator, DatabaseMigrationRepository from config import database repository = DatabaseMigrationRepository(database.DB, 'migrations') migrator = Migrator(repository, database.DB) if not migrator.repository_exists(): repository.create_repository() # Create a new list of migrations with the correct file path instead migration_list = [] for migration in migrator.get_repository().get_ran(): for directory in migration_directory: if os.path.exists(os.path.join(directory, migration + '.py')): migration_list.append(os.path.join(os.getcwd(), directory)) break # Rollback the migrations notes = [] for migration in migrator.get_repository().get_ran(): for migration_directory in migration_list: try: migrator.reset(migration_directory) except QueryException as e: raise e except FileNotFoundError: pass if migrator.get_notes(): notes += migrator.get_notes() # Show notes from the migrator self.line('') for note in notes: if not ('Nothing to rollback.' in note): self.line(note) if not notes: self.info('Nothing to rollback')
def fire(self): """ Executes the command. """ dialog = self.get_helper('dialog') confirm = dialog.ask_confirmation( self.output, '<question>Are you sure you want to rollback the last migration?</question> ', False) if not confirm: return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option('pretend') path = self.option('path') if path is None: path = self._get_migration_path() migrator.rollback(path, pretend) for note in migrator.get_notes(): self.line(note)
def fire(self): """ Executes the command. """ dialog = self.get_helper('dialog') confirm = dialog.ask_confirmation( self.output, '<question>Are you sure you want to rollback the last migration?</question> ', False ) if not confirm: return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option('pretend') path = self.option('path') if path is None: path = self._get_migration_path() migrator.rollback(path, pretend) for note in migrator.get_notes(): self.line(note)
def handle(self): """ Executes the command. """ if not self.confirm_to_proceed( "<question>Are you sure you want to rollback the last migration?:</question> " ): return database = self.option("database") repository = DatabaseMigrationRepository(self.resolver, "migrations") migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option("pretend") path = self.option("path") if path is None: path = self._get_migration_path() migrator.rollback(path, pretend) for note in migrator.get_notes(): self.line(note)
def fire(self): """ Executes the command. """ dialog = self.get_helper("dialog") confirm = dialog.ask_confirmation( self.output, "<question>Are you sure you want to reset all of the migrations?</question> ", False ) if not confirm: return database = self.option("database") repository = DatabaseMigrationRepository(self.resolver, "migrations") migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = bool(self.option("pretend")) path = self.option("path") if path is None: path = self._get_migration_path() while True: count = migrator.rollback(path, pretend) for note in migrator.get_notes(): self.line(note) if count == 0: break
def handle(self): """ Executes the command. """ prompt_msg = ('<question>Are you sure you want to rollback ' 'the last migration?:</question> ') if not self.confirm_to_proceed(prompt_msg): return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option('pretend') path = self.option('path') if path is None: path = self._get_migration_path() migrator.rollback(path, pretend) for note in migrator.get_notes(): self.line(note)
def handle(self): """ Executes the command. """ confirm = self.confirm( '<question>Are you sure you want to reset all of the migrations?</question> ', False ) if not confirm: return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = bool(self.option('pretend')) path = self.option('path') if path is None: path = self._get_migration_path() migrator.reset(path, pretend) for note in migrator.get_notes(): self.line(note)
def handle(self): """ Executes the command. """ confirm = self.confirm( '<question>Are you sure you want to rollback the last migration?</question> ', True ) if not confirm: return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option('pretend') path = self.option('path') if path is None: path = self._get_migration_path() migrator.rollback(path, pretend) for note in migrator.get_notes(): self.line(note)
def handle(self): """ Executes the command. """ confirm = self.confirm( '<question>Are you sure you want to reset all of the migrations?</question> ', False ) if not confirm: return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = bool(self.option('pretend')) path = self.option('path') if path is None: path = self._get_migration_path() while True: count = migrator.rollback(path, pretend) for note in migrator.get_notes(): self.line(note) if count == 0: break
def execute(self, i, o): """ Executes the command. :type i: cleo.inputs.input.Input :type o: cleo.outputs.output.Output """ super(MigrateCommand, self).execute(i, o) dialog = self.get_helper('dialog') confirm = dialog.ask_confirmation( o, '<question>Are you sure you want to proceed with the migration?</question> ', False ) if not confirm: return database = i.get_option('database') repository = DatabaseMigrationRepository(self._resolver, 'migrations') migrator = Migrator(repository, self._resolver) self._prepare_database(migrator, database, i, o) pretend = i.get_option('pretend') path = i.get_option('path') if path is None: path = self._get_migration_path() migrator.run(path, pretend) for note in migrator.get_notes(): o.writeln(note) # If the "seed" option has been given, we will rerun the database seed task # to repopulate the database. if i.get_option('seed'): options = [ ('--database', database), ('--config', i.get_option('config')), ('-n', True) ] if i.get_option('seed-path'): options.append(('--path', i.get_option('seed-path'))) self.call('db:seed', options, o)
def fire(self): """ Executes the command. """ dialog = self.get_helper('dialog') confirm = dialog.ask_confirmation( self.output, '<question>Are you sure you want to proceed with the migration?</question> ', False ) if not confirm: return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option('pretend') path = self.option('path') if path is None: path = self._get_migration_path() migrator.run(path, pretend) for note in migrator.get_notes(): self.line(note) # If the "seed" option has been given, we will rerun the database seed task # to repopulate the database. if self.option('seed'): options = [ ('--database', database), ('-n', True) ] if self.get_definition().has_option('config'): options.append(('--config', self.option('config'))) if self.option('seed-path'): options.append(('--path', self.option('seed-path'))) self.call('db:seed', options)
def execute(self, i, o): """ Executes the command. :type i: cleo.inputs.input.Input :type o: cleo.outputs.output.Output """ super(StatusCommand, self).execute(i, o) database = i.get_option('database') repository = DatabaseMigrationRepository(self._resolver, 'migrations') migrator = Migrator(repository, self._resolver) if not migrator.repository_exists(): return o.writeln('<error>No migrations found</error>') self._prepare_database(migrator, database, i, o) path = i.get_option('path') if path is None: path = self._get_migration_path() ran = migrator.get_repository().get_ran() migrations = [] for migration in migrator._get_migration_files(path): if migration in ran: migrations.append( ['<fg=cyan>%s</>' % migration, '<info>Yes</info>']) else: migrations.append( ['<fg=cyan>%s</>' % migration, '<fg=red>No</>']) if migrations: table = self.get_helper('table') table.set_headers(['Migration', 'Ran?']) table.set_rows(migrations) table.render(o) else: return o.writeln('<error>No migrations found</error>') for note in migrator.get_notes(): o.writeln(note)
def fire(self): """ Executes the command. """ dialog = self.get_helper('dialog') confirm = dialog.ask_confirmation( self.output, '<question>Are you sure you want to proceed with the migration?</question> ', False) if not confirm: return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option('pretend') path = self.option('path') if path is None: path = self._get_migration_path() migrator.run(path, pretend) for note in migrator.get_notes(): self.line(note) # If the "seed" option has been given, we will rerun the database seed task # to repopulate the database. if self.option('seed'): options = [('--database', database), ('-n', True)] if self.get_definition().has_option('config'): options.append(('--config', self.option('config'))) if self.option('seed-path'): options.append(('--path', self.option('seed-path'))) self.call('db:seed', options)
def execute(self, i, o): """ Executes the command. :type i: cleo.inputs.input.Input :type o: cleo.outputs.output.Output """ super(StatusCommand, self).execute(i, o) database = i.get_option('database') repository = DatabaseMigrationRepository(self._resolver, 'migrations') migrator = Migrator(repository, self._resolver) if not migrator.repository_exists(): return o.writeln('<error>No migrations found</error>') self._prepare_database(migrator, database, i, o) path = i.get_option('path') if path is None: path = self._get_migration_path() ran = migrator.get_repository().get_ran() migrations = [] for migration in migrator._get_migration_files(path): if migration in ran: migrations.append(['<fg=cyan>%s</>' % migration, '<info>Yes</info>']) else: migrations.append(['<fg=cyan>%s</>' % migration, '<fg=red>No</>']) if migrations: table = self.get_helper('table') table.set_headers(['Migration', 'Ran?']) table.set_rows(migrations) table.render(o) else: return o.writeln('<error>No migrations found</error>') for note in migrator.get_notes(): o.writeln(note)
def handle(self): """ Executes the command. """ database = self.option('database') self.resolver.set_default_connection(database) repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) if not migrator.repository_exists(): return self.error('No migrations found') self._prepare_database(migrator, database) path = self.option('path') if path is None: path = self._get_migration_path() ran = migrator.get_repository().get_ran() migrations = [] for migration in migrator._get_migration_files(path): if migration in ran: migrations.append(['<fg=cyan>%s</>' % migration, '<info>Yes</>']) else: migrations.append(['<fg=cyan>%s</>' % migration, '<fg=red>No</>']) if migrations: table = self.table( ['Migration', 'Ran?'], migrations ) table.render() else: return self.error('No migrations found') for note in migrator.get_notes(): self.line(note)
def handle(self): """ Executes the command. """ database = self.option('database') self.resolver.set_default_connection(database) repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) if not migrator.repository_exists(): return self.error('No migrations found') self._prepare_database(migrator, database) path = self.option('path') if path is None: path = self._get_migration_path() ran = migrator.get_repository().get_ran() migrations = [] for migration in migrator._get_migration_files(path): if migration in ran: migrations.append( ['<fg=cyan>%s</>' % migration, '<info>Yes</>']) else: migrations.append( ['<fg=cyan>%s</>' % migration, '<fg=red>No</>']) if migrations: table = self.table(['Migration', 'Ran?'], migrations) table.render() else: return self.error('No migrations found') for note in migrator.get_notes(): self.line(note)
def handle(self): prompt_msg = ('<question>Are you sureyou want ' 'to proceed with the migration?</question> ') if not self.confirm_to_proceed(prompt_msg): return database = self.option('database') repository = DatabaseMigrationRepository(self.resolver, 'migrations') migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option('pretend') path = self.option('path') if path is None: path = self._get_migration_path() migrator.run(path, pretend) for note in migrator.get_notes(): self.line(note) # If the "seed" option has been given, # we will rerun the database seed task to repopulate the database. if self.option('seed'): options = [('--force', self.option('force'))] if database: options.append(('--database', database)) if self.get_definition().has_option('config'): options.append(('--config', self.option('config'))) if self.option('seed-path'): options.append(('--path', self.option('seed-path'))) self.call('db:seed', options)
def handle(self): if not self.confirm_to_proceed( "<question>Are you sure you want to proceed with the migration?</question> " ): return database = self.option("database") repository = DatabaseMigrationRepository(self.resolver, "migrations") migrator = Migrator(repository, self.resolver) self._prepare_database(migrator, database) pretend = self.option("pretend") path = self.option("path") if path is None: path = self._get_migration_path() migrator.run(path, pretend) for note in migrator.get_notes(): self.line(note) # If the "seed" option has been given, we will rerun the database seed task # to repopulate the database. if self.option("seed"): options = [("--force", self.option("force"))] if database: options.append(("--database", database)) if self.get_definition().has_option("config"): options.append(("--config", self.option("config"))) if self.option("seed-path"): options.append(("--path", self.option("seed-path"))) self.call("db:seed", options)
def execute(self, i, o): """ Executes the command. :type i: cleo.inputs.input.Input :type o: cleo.outputs.output.Output """ super(ResetCommand, self).execute(i, o) dialog = self.get_helper('dialog') confirm = dialog.ask_confirmation( o, '<question>Are you sure you want to reset all of the migrations?</question> ', False ) if not confirm: return database = i.get_option('database') repository = DatabaseMigrationRepository(self._resolver, 'migrations') migrator = Migrator(repository, self._resolver) self._prepare_database(migrator, database, i, o) pretend = bool(i.get_option('pretend')) path = i.get_option('path') if path is None: path = self._get_migration_path() while True: count = migrator.rollback(path, pretend) for note in migrator.get_notes(): o.writeln(note) if count == 0: break
def execute(self, i, o): """ Executes the command. :type i: cleo.inputs.input.Input :type o: cleo.outputs.output.Output """ super(ResetCommand, self).execute(i, o) dialog = self.get_helper('dialog') confirm = dialog.ask_confirmation( o, '<question>Are you sure you want to reset all of the migrations?</question> ', False) if not confirm: return database = i.get_option('database') repository = DatabaseMigrationRepository(self._resolver, 'migrations') migrator = Migrator(repository, self._resolver) self._prepare_database(migrator, database, i, o) pretend = bool(i.get_option('pretend')) path = i.get_option('path') if path is None: path = self._get_migration_path() while True: count = migrator.rollback(path, pretend) for note in migrator.get_notes(): o.writeln(note) if count == 0: break