Download operation moves to Loader interface

to load extracted transactions to database.
This commit is contained in:
Luís Murta 2023-04-30 00:48:03 +01:00
parent 13c783ca0e
commit bdd7cac4be
Signed by: satprog
GPG Key ID: 169EF1BBD7049F94

View File

@ -29,6 +29,7 @@ from pfbudget.db.model import (
from pfbudget.extract.nordigen import NordigenClient, NordigenCredentialsManager from pfbudget.extract.nordigen import NordigenClient, NordigenCredentialsManager
from pfbudget.extract.parsers import parse_data from pfbudget.extract.parsers import parse_data
from pfbudget.extract.psd2 import PSD2Extractor from pfbudget.extract.psd2 import PSD2Extractor
from pfbudget.load.database import DatabaseLoader
from pfbudget.transform.categorizer import Categorizer from pfbudget.transform.categorizer import Categorizer
from pfbudget.transform.nullifier import Nullifier from pfbudget.transform.nullifier import Nullifier
from pfbudget.transform.tagger import Tagger from pfbudget.transform.tagger import Tagger
@ -80,17 +81,19 @@ class Manager:
else: else:
banks = self.database.select(Bank, Bank.nordigen) banks = self.database.select(Bank, Bank.nordigen)
client = Manager.nordigen_client() extractor = PSD2Extractor(Manager.nordigen_client())
extractor = PSD2Extractor(client)
transactions = [] transactions = []
for bank in banks: for bank in banks:
transactions.extend(extractor.extract(bank, params[0], params[1])) transactions.extend(extractor.extract(bank, params[0], params[1]))
# dry-run # dry-run
if not params[2]: if params[2]:
self.database.insert(sorted(transactions))
else:
print(sorted(transactions)) print(sorted(transactions))
return
loader = DatabaseLoader(self.database)
loader.load(sorted(transactions))
case Operation.Categorize: case Operation.Categorize:
with self.database.session as session: with self.database.session as session: