/�Xp* � @ s� d d l Z d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d d l m Z Gd d � d e � Z Gd d � d e e � Z Gd d � d e e � Z Gd d � d e e � Z d d � Z Gd d � d e � Z d S)� N)� MySQLMigrator�PostgresqlMigrator�SchemaMigrator�SqliteMigrator� Operation�SQL�Entity�Clause�PostgresqlDatabase� operation�SqliteDatabase� MySQLDatabase)�LOGGERc s e Z d Z d Z e � f d d � � Z d d d � Z e d d � � Z d d � Z e d d � � Z e d d � � Z � S)r zImplement migrations.c sa t | t � r t | � St | t � r2 t | � St | t � rK t | � St t | � j | � S)zInitialize migrator by db.) � isinstancer r r r r r �superr � from_database)�cls�database)� __class__� �/migrator.pyr s zSchemaMigrator.from_databaseTc s � � f d d � S)Nc s � j d � � S)N�cascade)� drop_tabler )r �modelr r �<lambda> s z+SchemaMigrator.drop_table.<locals>.<lambda>r )�selfr r r )r r r r s zSchemaMigrator.drop_tablec C sA | j | | | � g } | j s= | j | j | | � 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 sY | j d } | _ | j j � j | � } | | _ t t d � t | � t d � | � S)zSupport change columns.TzALTER TABLEzALTER COLUMN)r r �compiler�field_definitionr r r )r r �columnr"