U /�Xp* � @ s� d dl Zd dlmZmZmZm Z mZmZm Z mZmZmZmZmZ d dlmZ G dd� de�ZG dd� dee�ZG dd � d ee�ZG d d� dee �Z dd � ZG dd� de�ZdS )� N)� MySQLMigrator�PostgresqlMigrator�SchemaMigrator�SqliteMigrator� Operation�SQL�Entity�Clause�PostgresqlDatabase� operation�SqliteDatabase� MySQLDatabase)�LOGGERc sZ e Zd ZdZe� fdd��Zddd�Zedd� �Zd d � Z edd� �Z ed d� �Z� ZS )r zImplement migrations.c sF t |t�rt|�S t |t�r$t|�S t |t�r6t|�S tt| �� |�S )zInitialize migrator by db.) � isinstancer r r r r r �superr � from_database)�cls�database�� __class__� �/migrator.pyr s zSchemaMigrator.from_databaseTc s � �fdd�S )Nc s �j � d�S )N��cascade�� drop_tabler �r �modelr r �<lambda> � z+SchemaMigrator.drop_table.<locals>.<lambda>r ��selfr r r r r r s zSchemaMigrator.drop_tablec C s. | � |||�g}|js*|�| �||�g� |S )zChange column.)�alter_change_column�null�extend�add_not_null)r! �table�column_name�fieldZ operationsr r r � change_column s zSchemaMigrator.change_columnc C s>