Skip to content

Commit a6cbf13

Browse files
authored
feat: Move alembic config into mealie package for easier distribution (#4329)
1 parent f1e9615 commit a6cbf13

File tree

48 files changed

+24
-37
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+24
-37
lines changed

Taskfile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ tasks:
151151
py:migrate:
152152
desc: generates a new database migration file e.g. task py:migrate -- "add new column"
153153
cmds:
154-
- poetry run alembic revision --autogenerate -m "{{ .CLI_ARGS }}"
154+
- poetry run alembic --config mealie/alembic/alembic.ini revision --autogenerate -m "{{ .CLI_ARGS }}"
155155
- task: py:format
156156

157157
ui:build:

docker/Dockerfile

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,6 @@ COPY --from=crfpp /usr/local/bin/crf_test /usr/local/bin/crf_test
109109
COPY ./mealie $MEALIE_HOME/mealie
110110
COPY ./poetry.lock ./pyproject.toml $MEALIE_HOME/
111111

112-
# Alembic
113-
COPY ./alembic $MEALIE_HOME/alembic
114-
COPY ./alembic.ini $MEALIE_HOME/
115-
116112
# venv already has runtime deps installed we get a quicker install
117113
WORKDIR $MEALIE_HOME
118114
RUN . $VENV_PATH/bin/activate && poetry install -E pgsql --only main
File renamed without changes.

alembic.ini renamed to mealie/alembic/alembic.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[alembic]
44
# path to migration scripts
5-
script_location = alembic
5+
script_location = %(here)s
66

77
# template used to generate migration files
88
file_template = %%(year)d-%%(month).2d-%%(day).2d-%%(hour).2d.%%(minute).2d.%%(second).2d_%%(rev)s_%%(slug)s

alembic/env.py renamed to mealie/alembic/env.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from typing import Any
22

33
import sqlalchemy as sa
4+
from alembic import context
45

56
import mealie.db.models._all_models # noqa: F401
6-
from alembic import context
77
from mealie.core.config import get_app_settings
88
from mealie.db.models._model_base import SqlAlchemyBase
99

alembic/script.py.mako renamed to mealie/alembic/script.py.mako

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ Create Date: ${create_date}
66

77
"""
88
import sqlalchemy as sa
9+
from alembic import op
910

1011
import mealie.db.migration_types
11-
from alembic import op
1212
% if imports:
1313
${imports}
1414
% endif

alembic/versions/2024-02-23-16.15.07_2298bb460ffd_added_user_to_shopping_list.py renamed to mealie/alembic/versions/2024-02-23-16.15.07_2298bb460ffd_added_user_to_shopping_list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
from uuid import UUID
1010

1111
import sqlalchemy as sa
12+
from alembic import op
1213
from sqlalchemy import orm
1314

1415
import mealie.db.migration_types
15-
from alembic import op
1616
from mealie.core.root_logger import get_logger
1717

1818
logger = get_logger()

alembic/versions/2024-03-18-02.28.15_d7c6efd2de42_migrate_favorites_and_ratings_to_user_.py renamed to mealie/alembic/versions/2024-03-18-02.28.15_d7c6efd2de42_migrate_favorites_and_ratings_to_user_.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
from uuid import uuid4
1313

1414
import sqlalchemy as sa
15+
from alembic import op
1516
from sqlalchemy import orm
1617

1718
import mealie.db.migration_types
18-
from alembic import op
1919

2020
# revision identifiers, used by Alembic.
2121
revision = "d7c6efd2de42"

alembic/versions/2024-04-07-01.05.20_7788478a0338_add_group_recipe_actions.py renamed to mealie/alembic/versions/2024-04-07-01.05.20_7788478a0338_add_group_recipe_actions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
"""
88

99
import sqlalchemy as sa
10+
from alembic import op
1011

1112
import mealie.db.migration_types
12-
from alembic import op
1313

1414
# revision identifiers, used by Alembic.
1515
revision = "7788478a0338"

alembic/versions/2024-06-22-10.17.03_32d69327997b_add_staple_flag_to_foods.py renamed to mealie/alembic/versions/2024-06-22-10.17.03_32d69327997b_add_staple_flag_to_foods.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@
77
"""
88

99
import sqlalchemy as sa
10-
from sqlalchemy import orm
11-
1210
from alembic import op
11+
from sqlalchemy import orm
1312

1413
# revision identifiers, used by Alembic.
1514
revision = "32d69327997b"

alembic/versions/2024-07-12-16.16.29_feecc8ffb956_add_households.py renamed to mealie/alembic/versions/2024-07-12-16.16.29_feecc8ffb956_add_households.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
from uuid import uuid4
1313

1414
import sqlalchemy as sa
15+
from alembic import op
1516
from slugify import slugify
1617
from sqlalchemy import orm
1718

1819
import mealie.db.migration_types
19-
from alembic import op
2020
from mealie.core.config import get_app_settings
2121

2222
# revision identifiers, used by Alembic.

alembic/versions/2024-09-02-21.39.49_be568e39ffdf_added_household_recipe_lock_setting_and_.py renamed to mealie/alembic/versions/2024-09-02-21.39.49_be568e39ffdf_added_household_recipe_lock_setting_and_.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from textwrap import dedent
1010

1111
import sqlalchemy as sa
12-
1312
from alembic import op
1413

1514
# revision identifiers, used by Alembic.

alembic/versions/2024-09-18-14.52.55_1fe4bd37ccc8_add_households_filter_to_meal_plans.py renamed to mealie/alembic/versions/2024-09-18-14.52.55_1fe4bd37ccc8_add_households_filter_to_meal_plans.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
"""
88

99
import sqlalchemy as sa
10+
from alembic import op
1011

1112
import mealie.db.migration_types
12-
from alembic import op
1313

1414
# revision identifiers, used by Alembic.
1515
revision = "1fe4bd37ccc8"

alembic/versions/2024-10-01-14.17.00_602927e1013e_add_the_rest_of_the_schema_org_.py renamed to mealie/alembic/versions/2024-10-01-14.17.00_602927e1013e_add_the_rest_of_the_schema_org_.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
"""
88

99
import sqlalchemy as sa
10-
1110
from alembic import op
1211

1312
# revision identifiers, used by Alembic.

alembic/versions/2024-10-08-21.17.31_86054b40fd06_added_query_filter_string_to_cookbook_.py renamed to mealie/alembic/versions/2024-10-08-21.17.31_86054b40fd06_added_query_filter_string_to_cookbook_.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
"""
88

99
import sqlalchemy as sa
10+
from alembic import op
1011
from sqlalchemy import orm
1112

12-
from alembic import op
1313
from mealie.db.models._model_utils import guid
1414

1515
# revision identifiers, used by Alembic.

alembic/versions/2024-10-20-09.47.46_3897397b4631_add_summary_to_recipe_instructions.py renamed to mealie/alembic/versions/2024-10-20-09.47.46_3897397b4631_add_summary_to_recipe_instructions.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
"""
88

99
import sqlalchemy as sa
10-
1110
from alembic import op
1211

1312
# revision identifiers, used by Alembic.

alembic/versions/2024-10-23-15.50.59_b1020f328e98_add_recipe_yield_quantity.py renamed to mealie/alembic/versions/2024-10-23-15.50.59_b1020f328e98_add_recipe_yield_quantity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
"""
88

99
import sqlalchemy as sa
10+
from alembic import op
1011
from sqlalchemy import orm
1112

12-
from alembic import op
1313
from mealie.db.models._model_utils.guid import GUID
1414
from mealie.services.scraper.cleaner import clean_yield
1515

mealie/db/init_db.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
from pathlib import Path
44
from time import sleep
55

6-
from sqlalchemy import engine, orm, text
7-
86
from alembic import command, config, script
97
from alembic.config import Config
108
from alembic.runtime import migration
9+
from sqlalchemy import engine, orm, text
10+
1111
from mealie.core import root_logger
1212
from mealie.core.config import get_app_settings
1313
from mealie.db.db_setup import session_context
@@ -22,7 +22,7 @@
2222
from mealie.services.group_services.group_service import GroupService
2323
from mealie.services.household_services.household_service import HouseholdService
2424

25-
PROJECT_DIR = Path(__file__).parent.parent.parent
25+
ALEMBIC_DIR = Path(__file__).parent.parent / "alembic"
2626

2727
logger = root_logger.get_logger()
2828

@@ -101,7 +101,7 @@ def main():
101101
if max_retry == 0:
102102
raise ConnectionError("Database connection failed - exiting application.")
103103

104-
alembic_cfg_path = os.getenv("ALEMBIC_CONFIG_FILE", default=str(PROJECT_DIR / "alembic.ini"))
104+
alembic_cfg_path = os.getenv("ALEMBIC_CONFIG_FILE", default=str(ALEMBIC_DIR / "alembic.ini"))
105105

106106
if not os.path.isfile(alembic_cfg_path):
107107
raise Exception("Provided alembic config path doesn't exist")

mealie/services/backups_v2/alchemy_exporter.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,23 @@
33
import uuid
44
from logging import Logger
55
from os import path
6-
from pathlib import Path
76
from textwrap import dedent
87
from typing import Any
98

9+
from alembic import command
10+
from alembic.config import Config
1011
from fastapi.encoders import jsonable_encoder
1112
from pydantic import BaseModel
1213
from sqlalchemy import Connection, ForeignKey, ForeignKeyConstraint, MetaData, Table, create_engine, insert, text
1314
from sqlalchemy.engine import base
1415
from sqlalchemy.orm import sessionmaker
1516

16-
from alembic import command
17-
from alembic.config import Config
1817
from mealie.db import init_db
1918
from mealie.db.fixes.fix_migration_data import fix_migration_data
19+
from mealie.db.init_db import ALEMBIC_DIR
2020
from mealie.db.models._model_utils.guid import GUID
2121
from mealie.services._base_service import BaseService
2222

23-
PROJECT_DIR = Path(__file__).parent.parent.parent.parent
24-
2523

2624
class ForeignKeyDisabler:
2725
def __init__(self, connection: Connection, dialect_name: str, *, logger: Logger | None = None):
@@ -193,15 +191,12 @@ def restore(self, db_dump: dict) -> None:
193191
alembic_data = db_dump["alembic_version"]
194192
alembic_version = alembic_data[0]["version_num"]
195193

196-
alembic_cfg_path = os.getenv("ALEMBIC_CONFIG_FILE", default=str(PROJECT_DIR / "alembic.ini"))
194+
alembic_cfg_path = os.getenv("ALEMBIC_CONFIG_FILE", default=str(ALEMBIC_DIR / "alembic.ini"))
197195

198196
if not path.isfile(alembic_cfg_path):
199197
raise Exception("Provided alembic config path doesn't exist")
200198

201199
alembic_cfg = Config(alembic_cfg_path)
202-
# alembic's file resolver wants to use the "mealie" subdirectory when called from within the server package
203-
# Just override this to use the correct migrations path
204-
alembic_cfg.set_main_option("script_location", path.join(PROJECT_DIR, "alembic"))
205200
command.upgrade(alembic_cfg, alembic_version)
206201

207202
del db_dump["alembic_version"]

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ select = [
158158

159159
[tool.ruff.lint.per-file-ignores]
160160
"__init__.py" = ["E402", "E501"]
161-
"alembic/versions/2022*" = ["E501"]
162-
"alembic/versions/2023*" = ["E501"]
161+
"mealie/alembic/versions/2022*" = ["E501", "I001"]
162+
"mealie/alembic/versions/2023*" = ["E501", "I001"]
163163
"dev/scripts/all_recipes_stress_test.py" = ["E501"]
164164
"ldap_provider.py" = ["UP032"]
165165
"tests/conftest.py" = ["E402"]

tests/utils/alembic_reader.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
import pathlib
33
from functools import lru_cache
44

5-
from mealie.db.init_db import PROJECT_DIR
5+
from mealie.db.init_db import ALEMBIC_DIR
66

7-
ALEMBIC_MIGRATIONS = PROJECT_DIR / "alembic" / "versions"
7+
ALEMBIC_MIGRATIONS = ALEMBIC_DIR / "versions"
88

99

1010
def import_file(module_name: str, file_path: pathlib.Path):

0 commit comments

Comments
 (0)