fix: modify multiple times. (#279)
This commit is contained in:
parent
3fbf9febfb
commit
1c9b65cc37
@ -5,6 +5,7 @@
|
|||||||
### 0.7.2
|
### 0.7.2
|
||||||
|
|
||||||
- Support virtual fields.
|
- Support virtual fields.
|
||||||
|
- Fix modify multiple times. (#279)
|
||||||
|
|
||||||
### 0.7.1
|
### 0.7.1
|
||||||
|
|
||||||
|
@ -40,7 +40,9 @@ class BaseDDL:
|
|||||||
self.schema_generator = self.schema_generator_cls(client)
|
self.schema_generator = self.schema_generator_cls(client)
|
||||||
|
|
||||||
def create_table(self, model: "Type[Model]"):
|
def create_table(self, model: "Type[Model]"):
|
||||||
return self.schema_generator._get_table_sql(model, True)["table_creation_string"].rstrip(";")
|
return self.schema_generator._get_table_sql(model, True)["table_creation_string"].rstrip(
|
||||||
|
";"
|
||||||
|
)
|
||||||
|
|
||||||
def drop_table(self, table_name: str):
|
def drop_table(self, table_name: str):
|
||||||
return self._DROP_TABLE_TEMPLATE.format(table_name=table_name)
|
return self._DROP_TABLE_TEMPLATE.format(table_name=table_name)
|
||||||
|
@ -281,10 +281,18 @@ class Migrate:
|
|||||||
# remove indexes
|
# remove indexes
|
||||||
for index in old_indexes.difference(new_indexes):
|
for index in old_indexes.difference(new_indexes):
|
||||||
cls._add_operator(cls._drop_index(model, index, False), upgrade, True)
|
cls._add_operator(cls._drop_index(model, index, False), upgrade, True)
|
||||||
old_data_fields = list(filter(lambda x: x.get('db_field_types') is not None,
|
old_data_fields = list(
|
||||||
old_model_describe.get("data_fields")))
|
filter(
|
||||||
new_data_fields = list(filter(lambda x: x.get('db_field_types') is not None,
|
lambda x: x.get("db_field_types") is not None,
|
||||||
new_model_describe.get("data_fields")))
|
old_model_describe.get("data_fields"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
new_data_fields = list(
|
||||||
|
filter(
|
||||||
|
lambda x: x.get("db_field_types") is not None,
|
||||||
|
new_model_describe.get("data_fields"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
old_data_fields_name = list(map(lambda x: x.get("name"), old_data_fields))
|
old_data_fields_name = list(map(lambda x: x.get("name"), old_data_fields))
|
||||||
new_data_fields_name = list(map(lambda x: x.get("name"), new_data_fields))
|
new_data_fields_name = list(map(lambda x: x.get("name"), new_data_fields))
|
||||||
@ -440,6 +448,7 @@ class Migrate:
|
|||||||
filter(lambda x: x.get("name") == field_name, new_data_fields)
|
filter(lambda x: x.get("name") == field_name, new_data_fields)
|
||||||
)
|
)
|
||||||
changes = diff(old_data_field, new_data_field)
|
changes = diff(old_data_field, new_data_field)
|
||||||
|
modified = False
|
||||||
for change in changes:
|
for change in changes:
|
||||||
_, option, old_new = change
|
_, option, old_new = change
|
||||||
if option == "indexed":
|
if option == "indexed":
|
||||||
@ -477,11 +486,14 @@ class Migrate:
|
|||||||
# change nullable
|
# change nullable
|
||||||
cls._add_operator(cls._alter_null(model, new_data_field), upgrade)
|
cls._add_operator(cls._alter_null(model, new_data_field), upgrade)
|
||||||
else:
|
else:
|
||||||
|
if modified:
|
||||||
|
continue
|
||||||
# modify column
|
# modify column
|
||||||
cls._add_operator(
|
cls._add_operator(
|
||||||
cls._modify_field(model, new_data_field),
|
cls._modify_field(model, new_data_field),
|
||||||
upgrade,
|
upgrade,
|
||||||
)
|
)
|
||||||
|
modified = True
|
||||||
|
|
||||||
for old_model in old_models:
|
for old_model in old_models:
|
||||||
if old_model not in new_models.keys():
|
if old_model not in new_models.keys():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user