Exclude models.Aerich.

Add init record when init-db.
This commit is contained in:
long2ice 2020-05-22 11:59:03 +08:00
parent bab5ebf2f0
commit c01d2993e0
5 changed files with 36 additions and 5 deletions

View File

@ -4,6 +4,15 @@ ChangeLog
0.1 0.1
=== ===
0.1.7
-----
- Exclude models.Aerich.
- Add init record when init-db.
0.1.6
-----
- update dependency_links
0.1.5 0.1.5
----- -----
- Add sqlite and postgres support. - Add sqlite and postgres support.

View File

@ -1 +1 @@
__version__ = "0.1.6" __version__ = "0.1.7"

View File

@ -8,6 +8,7 @@ import asyncclick as click
from asyncclick import Context, UsageError from asyncclick import Context, UsageError
from tortoise import ConfigurationError, Tortoise, generate_schema_for_client from tortoise import ConfigurationError, Tortoise, generate_schema_for_client
from tortoise.transactions import in_transaction from tortoise.transactions import in_transaction
from tortoise.utils import get_schema_sql
from aerich.migrate import Migrate from aerich.migrate import Migrate
from aerich.utils import get_app_connection, get_app_connection_name, get_tortoise_config 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: with open(file_path, "r") as f:
content = json.load(f) content = json.load(f)
downgrade_query_list = content.get("downgrade") 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: for downgrade_query in downgrade_query_list:
await conn.execute_query(downgrade_query) await conn.execute_query(downgrade_query)
await last_version.delete() await last_version.delete()
@ -198,6 +201,8 @@ async def init_db(ctx: Context, safe):
if not os.path.isdir(dirname): if not os.path.isdir(dirname):
os.mkdir(dirname) os.mkdir(dirname)
click.secho(f"Success create app migrate location {dirname}", fg=Color.green) 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) Migrate.write_old_models(config, app, location)
@ -205,6 +210,15 @@ async def init_db(ctx: Context, safe):
connection = get_app_connection(config, app) connection = get_app_connection(config, app)
await generate_schema_for_client(connection, safe) 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) return click.secho(f'Success generate schema for app "{app}"', fg=Color.green)

View File

@ -78,15 +78,21 @@ class Migrate:
async def _get_last_version_num(cls): async def _get_last_version_num(cls):
last_version = await cls.get_last_version() last_version = await cls.get_last_version()
if not last_version: if not last_version:
return 0 return None
version = last_version.version version = last_version.version
return version.split("_")[0] return version.split("_")[0]
@classmethod @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("/", "") now = datetime.now().strftime("%Y%M%D%H%M%S").replace("/", "")
last_version_num = await cls._get_last_version_num() 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 = { content = {
"upgrade": cls.upgrade_operators, "upgrade": cls.upgrade_operators,
"downgrade": cls.downgrade_operators, "downgrade": cls.downgrade_operators,
@ -181,6 +187,8 @@ class Migrate:
:param location: :param location:
:return: :return:
""" """
cls.app = app
old_model_files = [] old_model_files = []
models = config.get("apps").get(app).get("models") models = config.get("apps").get(app).get("models")
for model in models: for model in models:

View File

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "aerich" name = "aerich"
version = "0.1.6" version = "0.1.7"
description = "A database migrations tool for Tortoise ORM." description = "A database migrations tool for Tortoise ORM."
authors = ["long2ice <long2ice@gmail.com>"] authors = ["long2ice <long2ice@gmail.com>"]