From c01d2993e0a29afd502a01db999e9fa1aa0bc19a Mon Sep 17 00:00:00 2001 From: long2ice Date: Fri, 22 May 2020 11:59:03 +0800 Subject: [PATCH] Exclude models.Aerich. Add init record when init-db. --- CHANGELOG.rst | 9 +++++++++ aerich/__init__.py | 2 +- aerich/cli.py | 14 ++++++++++++++ aerich/migrate.py | 14 +++++++++++--- pyproject.toml | 2 +- 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2047551..ff46e08 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,15 @@ ChangeLog 0.1 === +0.1.7 +----- +- Exclude models.Aerich. +- Add init record when init-db. + +0.1.6 +----- +- update dependency_links + 0.1.5 ----- - Add sqlite and postgres support. diff --git a/aerich/__init__.py b/aerich/__init__.py index 0a8da88..f1380ee 100644 --- a/aerich/__init__.py +++ b/aerich/__init__.py @@ -1 +1 @@ -__version__ = "0.1.6" +__version__ = "0.1.7" diff --git a/aerich/cli.py b/aerich/cli.py index ec6f367..c0cd749 100644 --- a/aerich/cli.py +++ b/aerich/cli.py @@ -8,6 +8,7 @@ import asyncclick as click from asyncclick import Context, UsageError from tortoise import ConfigurationError, Tortoise, generate_schema_for_client from tortoise.transactions import in_transaction +from tortoise.utils import get_schema_sql from aerich.migrate import Migrate from aerich.utils import get_app_connection, get_app_connection_name, get_tortoise_config @@ -117,6 +118,8 @@ async def downgrade(ctx: Context): with open(file_path, "r") as f: content = json.load(f) downgrade_query_list = content.get("downgrade") + if not downgrade_query_list: + return click.secho(f"No downgrade item dound", fg=Color.yellow) for downgrade_query in downgrade_query_list: await conn.execute_query(downgrade_query) await last_version.delete() @@ -198,6 +201,8 @@ async def init_db(ctx: Context, safe): if not os.path.isdir(dirname): os.mkdir(dirname) click.secho(f"Success create app migrate location {dirname}", fg=Color.green) + else: + return click.secho(f"Inited {app} already", fg=Color.yellow) Migrate.write_old_models(config, app, location) @@ -205,6 +210,15 @@ async def init_db(ctx: Context, safe): connection = get_app_connection(config, app) await generate_schema_for_client(connection, safe) + schema = get_schema_sql(connection, safe) + + version = await Migrate.generate_version() + await Aerich.create(version=version, app=app) + with open(os.path.join(dirname, version), "w") as f: + content = { + "upgrade": schema, + } + json.dump(content, f, ensure_ascii=False, indent=2) return click.secho(f'Success generate schema for app "{app}"', fg=Color.green) diff --git a/aerich/migrate.py b/aerich/migrate.py index 4043b79..1b415e9 100644 --- a/aerich/migrate.py +++ b/aerich/migrate.py @@ -78,15 +78,21 @@ class Migrate: async def _get_last_version_num(cls): last_version = await cls.get_last_version() if not last_version: - return 0 + return None version = last_version.version return version.split("_")[0] @classmethod - async def _generate_diff_sql(cls, name): + async def generate_version(cls, name=None): now = datetime.now().strftime("%Y%M%D%H%M%S").replace("/", "") last_version_num = await cls._get_last_version_num() - version = f"{last_version_num + 1}_{now}_{name}.json" + if last_version_num is None: + return f"0_{now}_init.json" + return f"{last_version_num + 1}_{now}_{name}.json" + + @classmethod + async def _generate_diff_sql(cls, name): + version = await cls.generate_version(name) content = { "upgrade": cls.upgrade_operators, "downgrade": cls.downgrade_operators, @@ -181,6 +187,8 @@ class Migrate: :param location: :return: """ + cls.app = app + old_model_files = [] models = config.get("apps").get(app).get("models") for model in models: diff --git a/pyproject.toml b/pyproject.toml index f61f0c9..5ed2468 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "aerich" -version = "0.1.6" +version = "0.1.7" description = "A database migrations tool for Tortoise ORM." authors = ["long2ice "]