Allow Nordigen parameter in Bank constructor

and remove Nordigen FK to Bank from Nordigen constructor. It is auto
generated upon DB insertion.
This commit is contained in:
Luís Murta 2023-05-10 22:27:40 +01:00
parent 3698654715
commit 21099909c9
Signed by: satprog
GPG Key ID: 169EF1BBD7049F94
4 changed files with 17 additions and 8 deletions

View File

@ -63,7 +63,7 @@ class Bank(Base, Export):
BIC: Mapped[str] = mapped_column(String(8)) BIC: Mapped[str] = mapped_column(String(8))
type: Mapped[AccountType] type: Mapped[AccountType]
nordigen: Mapped[Optional[Nordigen]] = relationship(init=False, lazy="joined") nordigen: Mapped[Optional[Nordigen]] = relationship(default=None, lazy="joined")
@property @property
def format(self) -> dict[str, Any]: def format(self) -> dict[str, Any]:
@ -241,7 +241,7 @@ class Note(Base):
class Nordigen(Base, Export): class Nordigen(Base, Export):
__tablename__ = "banks_nordigen" __tablename__ = "banks_nordigen"
name: Mapped[bankfk] = mapped_column(primary_key=True) name: Mapped[bankfk] = mapped_column(primary_key=True, init=False)
bank_id: Mapped[Optional[str]] bank_id: Mapped[Optional[str]]
requisition_id: Mapped[Optional[str]] requisition_id: Mapped[Optional[str]]
invert: Mapped[Optional[bool]] = mapped_column(default=None) invert: Mapped[Optional[bool]] = mapped_column(default=None)

View File

@ -1,4 +1,8 @@
from pfbudget.db.model import AccountType, Bank from pfbudget.db.model import AccountType, Bank, Nordigen
checking = Bank("bank", "BANK", AccountType.checking) checking = Bank(
"bank", "BANK", AccountType.checking, Nordigen("bank_id", "requisition_id")
)
cc = Bank("cc", "CC", AccountType.MASTERCARD)

View File

@ -25,11 +25,15 @@ def client() -> Client:
@pytest.fixture @pytest.fixture
def banks(client: Client) -> list[Bank]: def banks(client: Client) -> list[Bank]:
banks = [ banks = [
Bank("bank", "BANK", AccountType.checking), Bank("bank", "BANK", AccountType.checking, Nordigen(None, "req", None)),
Bank("broker", "BROKER", AccountType.investment), Bank("broker", "BROKER", AccountType.investment),
Bank("creditcard", "CC", AccountType.MASTERCARD), Bank("creditcard", "CC", AccountType.MASTERCARD),
] ]
banks[0].nordigen = Nordigen("bank", None, "req", None)
# fix nordigen bank names which would be generated post DB insert
for bank in banks:
if bank.nordigen:
bank.nordigen.name = bank.name
client.insert(banks) client.insert(banks)
return banks return banks
@ -48,6 +52,8 @@ def transactions(client: Client) -> list[Transaction]:
] ]
client.insert(transactions) client.insert(transactions)
# fix ids which would be generated post DB insert
for i, transaction in enumerate(transactions): for i, transaction in enumerate(transactions):
transaction.id = i + 1 transaction.id = i + 1
if transaction.category: if transaction.category:

View File

@ -64,8 +64,7 @@ def extractor() -> Extractor:
@pytest.fixture @pytest.fixture
def bank() -> Bank: def bank() -> Bank:
bank = Bank("Bank#1", "", AccountType.checking) bank = Bank("Bank#1", "", AccountType.checking, Nordigen("", mock.id, False))
bank.nordigen = Nordigen("", "", mock.id, False)
return bank return bank