Fix default function when migrate. (#147)

This commit is contained in:
long2ice
2021-04-05 14:10:42 +08:00
parent b147859960
commit 44fd2fe6ae
8 changed files with 117 additions and 156 deletions

View File

@@ -49,11 +49,7 @@ def coro(f):
@click.group(context_settings={"help_option_names": ["-h", "--help"]})
@click.version_option(__version__, "-V", "--version")
@click.option(
"-c",
"--config",
default="aerich.ini",
show_default=True,
help="Config file.",
"-c", "--config", default="aerich.ini", show_default=True, help="Config file.",
)
@click.option("--app", required=False, help="Tortoise-ORM app name.")
@click.option(
@@ -122,9 +118,7 @@ async def upgrade(ctx: Context):
for upgrade_query in upgrade_query_list:
await conn.execute_script(upgrade_query)
await Aerich.create(
version=version_file,
app=app,
content=get_models_describe(app),
version=version_file, app=app, content=get_models_describe(app),
)
click.secho(f"Success upgrade {version_file}", fg=Color.green)
migrated = True
@@ -218,17 +212,12 @@ async def history(ctx: Context):
help="Tortoise-ORM config module dict variable, like settings.TORTOISE_ORM.",
)
@click.option(
"--location",
default="./migrations",
show_default=True,
help="Migrate store location.",
"--location", default="./migrations", show_default=True, help="Migrate store location.",
)
@click.pass_context
@coro
async def init(
ctx: Context,
tortoise_orm,
location,
ctx: Context, tortoise_orm, location,
):
config_file = ctx.obj["config_file"]
name = ctx.obj["name"]
@@ -280,9 +269,7 @@ async def init_db(ctx: Context, safe):
version = await Migrate.generate_version()
await Aerich.create(
version=version,
app=app,
content=get_models_describe(app),
version=version, app=app, content=get_models_describe(app),
)
content = {
"upgrade": [schema],
@@ -293,11 +280,7 @@ async def init_db(ctx: Context, safe):
@cli.command(help="Introspects the database tables to standard output as TortoiseORM model.")
@click.option(
"-t",
"--table",
help="Which tables to inspect.",
multiple=True,
required=False,
"-t", "--table", help="Which tables to inspect.", multiple=True, required=False,
)
@click.pass_context
@coro

View File

@@ -78,7 +78,11 @@ class BaseDDL:
auto_now_add = field_describe.get("auto_now_add", False)
auto_now = field_describe.get("auto_now", False)
if default is not None or auto_now_add:
if field_describe.get("field_type") in ["UUIDField", "TextField", "JSONField"] or is_default_function(default):
if field_describe.get("field_type") in [
"UUIDField",
"TextField",
"JSONField",
] or is_default_function(default):
default = ""
else:
try:
@@ -111,9 +115,7 @@ class BaseDDL:
nullable="NOT NULL" if not field_describe.get("nullable") else "",
unique="UNIQUE" if field_describe.get("unique") else "",
comment=self.schema_generator._column_comment_generator(
table=db_table,
column=db_column,
comment=field_describe.get("description"),
table=db_table, column=db_column, comment=field_describe.get("description"),
)
if description
else "",

View File

@@ -1,5 +1,4 @@
import os
import re
from datetime import datetime
from pathlib import Path
from typing import Dict, List, Optional, Tuple, Type
@@ -238,14 +237,12 @@ class Migrate:
# add unique_together
for index in new_unique_together.difference(old_unique_together):
cls._add_operator(
cls._add_index(model, index, True),
upgrade,
cls._add_index(model, index, True), upgrade,
)
# remove unique_together
for index in old_unique_together.difference(new_unique_together):
cls._add_operator(
cls._drop_index(model, index, True),
upgrade,
cls._drop_index(model, index, True), upgrade,
)
old_data_fields = old_model_describe.get("data_fields")
@@ -269,11 +266,7 @@ class Migrate:
# rename field
if (
changes[0]
== (
"change",
"name",
(old_data_field_name, new_data_field_name),
)
== ("change", "name", (old_data_field_name, new_data_field_name),)
and changes[1]
== (
"change",
@@ -304,21 +297,15 @@ class Migrate:
and cls._db_version.startswith("5.")
):
cls._add_operator(
cls._modify_field(model, new_data_field),
upgrade,
cls._modify_field(model, new_data_field), upgrade,
)
else:
cls._add_operator(
cls._rename_field(model, *changes[1][2]),
upgrade,
cls._rename_field(model, *changes[1][2]), upgrade,
)
if not is_rename:
cls._add_operator(
cls._add_field(
model,
new_data_field,
),
upgrade,
cls._add_field(model, new_data_field,), upgrade,
)
# remove fields
for old_data_field_name in set(old_data_fields_name).difference(
@@ -388,13 +375,11 @@ class Migrate:
unique = new_data_field.get("unique")
if old_new[0] is False and old_new[1] is True:
cls._add_operator(
cls._add_index(model, (field_name,), unique),
upgrade,
cls._add_index(model, (field_name,), unique), upgrade,
)
else:
cls._add_operator(
cls._drop_index(model, (field_name,), unique),
upgrade,
cls._drop_index(model, (field_name,), unique), upgrade,
)
elif option == "db_field_types.":
# continue since repeated with others
@@ -416,8 +401,7 @@ class Migrate:
else:
# modify column
cls._add_operator(
cls._modify_field(model, new_data_field),
upgrade,
cls._modify_field(model, new_data_field), upgrade,
)
for old_model in old_models:

View File

@@ -17,8 +17,7 @@ def get_app_connection_name(config, app_name: str) -> str:
if app:
return app.get("default_connection", "default")
raise BadOptionUsage(
option_name="--app",
message=f'Can\'t get app named "{app_name}"',
option_name="--app", message=f'Can\'t get app named "{app_name}"',
)