diff --git a/Makefile b/Makefile index 4532a15..722f7ba 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ ORANGE=\033[0;33m BLUE=\033[0;34m NC=\033[0m # No Color -.PHONY: test djlint pylint +.PHONY: test lint djlint pylint ruff venv: ## Create the venv python3 -m venv venv @@ -28,9 +28,7 @@ djlint: venv ## Format the templates venv/bin/djlint --ignore=H030,H031,H006 --profile jinja --lint argos/server/templates/*html pylint: venv ## Runs pylint on the code venv/bin/pylint argos -pylint-alembic: venv ## Runs pylint on alembic migration files - venv/bin/pylint --disable invalid-name,no-member alembic/versions/*.py -lint: djlint pylint pylint-alembic ruff +lint: djlint pylint ruff help: @python3 -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) diff --git a/argos/commands.py b/argos/commands.py index bf639b5..c7da649 100644 --- a/argos/commands.py +++ b/argos/commands.py @@ -209,7 +209,8 @@ async def migrate(config): settings = get_app_settings() - alembic_cfg = Config("alembic.ini") + current_dir = os.path.dirname(__file__) + alembic_cfg = Config(os.path.join(current_dir, "server/migrations/alembic.ini")) alembic_cfg.set_main_option("sqlalchemy.url", settings.database_url) command.upgrade(alembic_cfg, "head") diff --git a/alembic.ini b/argos/server/migrations/alembic.ini similarity index 85% rename from alembic.ini rename to argos/server/migrations/alembic.ini index afb61ac..fa98093 100644 --- a/alembic.ini +++ b/argos/server/migrations/alembic.ini @@ -1,10 +1,12 @@ [alembic] -script_location = alembic +script_location = %(here)s prepend_sys_path = . -version_path_separator = os +version_path_separator = os sqlalchemy.url = sqlite:////tmp/argos.db +version_locations = %(here)s/versions + # Logging configuration [loggers] keys = root,sqlalchemy,alembic diff --git a/alembic/env.py b/argos/server/migrations/env.py similarity index 100% rename from alembic/env.py rename to argos/server/migrations/env.py diff --git a/alembic/script.py.mako b/argos/server/migrations/script.py.mako similarity index 100% rename from alembic/script.py.mako rename to argos/server/migrations/script.py.mako diff --git a/alembic/versions/1a3497f9f71b_adding_configcache_model.py b/argos/server/migrations/versions/1a3497f9f71b_adding_configcache_model.py similarity index 100% rename from alembic/versions/1a3497f9f71b_adding_configcache_model.py rename to argos/server/migrations/versions/1a3497f9f71b_adding_configcache_model.py diff --git a/alembic/versions/7d480e6f1112_initial_migrations.py b/argos/server/migrations/versions/7d480e6f1112_initial_migrations.py similarity index 100% rename from alembic/versions/7d480e6f1112_initial_migrations.py rename to argos/server/migrations/versions/7d480e6f1112_initial_migrations.py diff --git a/alembic/versions/defda3f2952d_add_on_delete_cascade_to_results_task_id.py b/argos/server/migrations/versions/defda3f2952d_add_on_delete_cascade_to_results_task_id.py similarity index 74% rename from alembic/versions/defda3f2952d_add_on_delete_cascade_to_results_task_id.py rename to argos/server/migrations/versions/defda3f2952d_add_on_delete_cascade_to_results_task_id.py index 6767757..71795f4 100644 --- a/alembic/versions/defda3f2952d_add_on_delete_cascade_to_results_task_id.py +++ b/argos/server/migrations/versions/defda3f2952d_add_on_delete_cascade_to_results_task_id.py @@ -18,16 +18,20 @@ depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: + bind = op.get_bind() with op.batch_alter_table("results", schema=None) as batch_op: - batch_op.drop_constraint("results_task_id_fkey", type_="foreignkey") + if bind.engine.name != "sqlite": + batch_op.drop_constraint("results_task_id_fkey", type_="foreignkey") batch_op.create_foreign_key( "results_task_id_fkey", "tasks", ["task_id"], ["id"], ondelete="CASCADE" ) def downgrade() -> None: + bind = op.get_bind() with op.batch_alter_table("results", schema=None) as batch_op: - batch_op.drop_constraint("results_task_id_fkey", type_="foreignkey") + if bind.engine.name != "sqlite": + batch_op.drop_constraint("results_task_id_fkey", type_="foreignkey") batch_op.create_foreign_key( "results_task_id_fkey", "tasks", ["task_id"], ["id"] ) diff --git a/alembic/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py b/argos/server/migrations/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py similarity index 88% rename from alembic/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py rename to argos/server/migrations/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py index 9f117aa..265c20f 100644 --- a/alembic/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py +++ b/argos/server/migrations/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py @@ -19,7 +19,9 @@ depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: - op.execute("ALTER TYPE severity ADD VALUE 'unknown'") + bind = op.get_bind() + if bind.engine.name != "sqlite": + op.execute("ALTER TYPE severity ADD VALUE 'unknown'") op.add_column( "tasks", sa.Column( diff --git a/docs/developer/migrations.md b/docs/developer/migrations.md index a5190e8..72e75c8 100644 --- a/docs/developer/migrations.md +++ b/docs/developer/migrations.md @@ -7,7 +7,7 @@ First, do your changes in the code, change the model, add new tables, etc. Once you're done, you can create a new migration. ```bash -venv/bin/alembic revision --autogenerate -m "migration reason" +venv/bin/alembic -c argos/server/migrations/alembic.ini revision --autogenerate -m "migration reason" ``` Edit the created file to remove comments and adapt it to make sure the migration is complete (Alembic is not powerful enough to cover all the corner cases).