Verified Commit bc896241 authored by Jakob Moser's avatar Jakob Moser
Browse files

Move db logic to module

parent e4b97390
Loading
Loading
Loading
Loading
+2 −10
Original line number Diff line number Diff line
from pathlib import Path

from sqlalchemy import create_engine
from sqlalchemy.orm import Session

from poolpay import db, paths
from poolpay.card.Pirc522CardReader import Pirc522CardReader
from poolpay.director.Director import Director
from poolpay.display.PygameDisplay import PygameDisplay
from poolpay.model.Retrievable import Retrievable
from poolpay.ui.pygame.play import play
from poolpay.vault.Vault import Vault

@@ -20,15 +16,11 @@ director = Director(play, display)

with vault.open(password), Pirc522CardReader() as card_reader:
    try:
        engine = create_engine(f"sqlite:///{paths.db_file}")
        Retrievable.metadata.create_all(engine)
        db.session = Session(engine)

        db.open(paths.db_file)
        director.start()
        card_reader.on_card_removed(lambda reader: director.card_removed())
        card_reader.on_card_presented(
            lambda reader: director.card_presented(reader.read_id())
        )
    finally:
        db.session.close()
        engine.dispose()
        db.close()
+23 −0
Original line number Diff line number Diff line
from pathlib import Path

from sqlalchemy import Engine, create_engine
from sqlalchemy.orm import Session

from poolpay.model.Retrievable import Retrievable

session: Session | None = None
_engine: Engine | None = None


def open(db_file: Path) -> None:
    global _engine
    _engine = create_engine(f"sqlite:///{db_file}")
    Retrievable.metadata.create_all(_engine)

    global session
    session = Session(_engine)


def close() -> None:
    if session is not None:
        session.close()

    if _engine is not None:
        _engine.dispose()