From ad5a90c5e7afa20fdb6ab166f71d0b09f69e1158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9taireau?= Date: Fri, 5 Apr 2024 15:23:52 +0200 Subject: [PATCH 1/4] Move migrations inside the `argos/server/migrations` directory. They are required to be accessible by the server when running an upgrade, and as such need to part of the packaged files. --- {alembic => argos/server/migrations}/env.py | 0 {alembic => argos/server/migrations}/script.py.mako | 0 .../migrations}/versions/1a3497f9f71b_adding_configcache_model.py | 0 .../migrations}/versions/7d480e6f1112_initial_migrations.py | 0 .../defda3f2952d_add_on_delete_cascade_to_results_task_id.py | 0 .../e99bc35702c9_add_severity_to_task_and_add_severity_.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {alembic => argos/server/migrations}/env.py (100%) rename {alembic => argos/server/migrations}/script.py.mako (100%) rename {alembic => argos/server/migrations}/versions/1a3497f9f71b_adding_configcache_model.py (100%) rename {alembic => argos/server/migrations}/versions/7d480e6f1112_initial_migrations.py (100%) rename {alembic => argos/server/migrations}/versions/defda3f2952d_add_on_delete_cascade_to_results_task_id.py (100%) rename {alembic => argos/server/migrations}/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py (100%) 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 100% 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 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 100% 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 From a9b7b8f750f1b33e575f85a796b4f8be4069d037 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 8 Apr 2024 08:45:21 +0200 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=9A=9A=20=E2=80=94=20Set=20Alembic?= =?UTF-8?q?=E2=80=99s=20version=5Flocations=20to=20new=20location?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 6 ++---- alembic.ini | 4 +++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 94757f4..56187e3 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 @@ -27,9 +27,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/alembic.ini b/alembic.ini index afb61ac..4c84fe0 100644 --- a/alembic.ini +++ b/alembic.ini @@ -2,9 +2,11 @@ script_location = alembic prepend_sys_path = . -version_path_separator = os +version_path_separator = os sqlalchemy.url = sqlite:////tmp/argos.db +version_locations = %(here)s/argos/server/migrations/versions + # Logging configuration [loggers] keys = root,sqlalchemy,alembic From fa4de8a2b7b4161b07ff85a7d3925db2851740d9 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Mon, 8 Apr 2024 11:21:57 +0200 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=97=83=20=E2=80=94=20Fix=20some=20mig?= =?UTF-8?q?rations=20for=20SQLite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...fda3f2952d_add_on_delete_cascade_to_results_task_id.py | 8 ++++++-- ...e99bc35702c9_add_severity_to_task_and_add_severity_.py | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/argos/server/migrations/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 index 6767757..71795f4 100644 --- a/argos/server/migrations/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/argos/server/migrations/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py b/argos/server/migrations/versions/e99bc35702c9_add_severity_to_task_and_add_severity_.py index 9f117aa..265c20f 100644 --- a/argos/server/migrations/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( From 1a440940846a5acccebb4a39ba1a3a6d13b8b0e5 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Wed, 10 Apr 2024 17:39:52 +0200 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=9A=9A=20=E2=80=94=20Move=20alembic.i?= =?UTF-8?q?ni=20in=20argos=20directory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- argos/commands.py | 3 ++- alembic.ini => argos/server/migrations/alembic.ini | 4 ++-- docs/developer/migrations.md | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) rename alembic.ini => argos/server/migrations/alembic.ini (87%) diff --git a/argos/commands.py b/argos/commands.py index ca87647..afc7a75 100644 --- a/argos/commands.py +++ b/argos/commands.py @@ -172,7 +172,8 @@ async def migrate(): 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 87% rename from alembic.ini rename to argos/server/migrations/alembic.ini index 4c84fe0..fa98093 100644 --- a/alembic.ini +++ b/argos/server/migrations/alembic.ini @@ -1,11 +1,11 @@ [alembic] -script_location = alembic +script_location = %(here)s prepend_sys_path = . version_path_separator = os sqlalchemy.url = sqlite:////tmp/argos.db -version_locations = %(here)s/argos/server/migrations/versions +version_locations = %(here)s/versions # Logging configuration [loggers] 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).