mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-22 14:49:40 +02:00
39 lines
986 B
Python
39 lines
986 B
Python
|
import importlib.util
|
||
|
import pathlib
|
||
|
from functools import lru_cache
|
||
|
|
||
|
from mealie.db.init_db import PROJECT_DIR
|
||
|
|
||
|
ALEMBIC_MIGRATIONS = PROJECT_DIR / "alembic" / "versions"
|
||
|
|
||
|
|
||
|
def import_file(module_name: str, file_path: pathlib.Path):
|
||
|
spec = importlib.util.spec_from_file_location(module_name, file_path)
|
||
|
|
||
|
if spec is None or spec.loader is None:
|
||
|
raise ImportError(f"Unable to import {module_name} from {file_path}")
|
||
|
|
||
|
module = importlib.util.module_from_spec(spec)
|
||
|
spec.loader.exec_module(module)
|
||
|
return module
|
||
|
|
||
|
|
||
|
def latest_alembic_version() -> str:
|
||
|
latest = sorted(ALEMBIC_MIGRATIONS.glob("*.py"))[-1] # Assumes files are named in order
|
||
|
|
||
|
mod = import_file("alembic_version", latest)
|
||
|
|
||
|
revision = getattr(mod, "revision", None)
|
||
|
|
||
|
if revision is None:
|
||
|
raise Exception(f"Unable to find revision in {latest}")
|
||
|
|
||
|
return revision
|
||
|
|
||
|
|
||
|
@lru_cache(1)
|
||
|
def alembic_versions():
|
||
|
return [
|
||
|
{"version_num": latest_alembic_version()},
|
||
|
]
|