import subprocess from dataclasses import dataclass from pathlib import Path from app.lib import settings @dataclass class DatabaseConfig: HOST: str PORT: int NAME: str USER: str PASSWORD: str def migrate(conf: DatabaseConfig) -> None: script_path = Path(__file__).parent migrations_path = script_path / "migrations" conf_file = migrations_path / "flyway.conf" args = [ settings.db.FLYWAY_PATH, "migrate", f"-url=jdbc:postgresql://{conf.HOST}:{conf.PORT}/{conf.NAME}", f"-user={conf.USER}", f"-password={conf.PASSWORD}", f"-configFiles={conf_file}", f"-locations=filesystem:{migrations_path}", ] subprocess.run( args=args, encoding="utf-8", ) def main() -> None: conf = DatabaseConfig( HOST=settings.db.HOST, PORT=settings.db.PORT, NAME=settings.db.NAME, USER=settings.db.USER, PASSWORD=settings.db.PASSWORD, ) migrate(conf) if __name__ == "__main__": main()