diff --git a/pfbudget/db/model.py b/pfbudget/db/model.py index 0c12deb..83fe446 100644 --- a/pfbudget/db/model.py +++ b/pfbudget/db/model.py @@ -252,10 +252,6 @@ class CategoryGroup(Base, Serializable): name: Mapped[str] = mapped_column(primary_key=True) - categories: Mapped[list[Category]] = relationship( - default_factory=list, lazy="joined" - ) - def serialize(self) -> Mapping[str, Any]: return super().serialize() | dict(name=self.name) @@ -524,6 +520,7 @@ class CategoryRule(Rule): __mapper_args__ = { "polymorphic_identity": "category_rule", + "polymorphic_load": "selectin", } @@ -542,4 +539,5 @@ class TagRule(Rule): __mapper_args__ = { "polymorphic_identity": "tag_rule", + "polymorphic_load": "selectin", } diff --git a/tests/test_backup.py b/tests/test_backup.py index fe824b0..87bae30 100644 --- a/tests/test_backup.py +++ b/tests/test_backup.py @@ -17,6 +17,7 @@ from pfbudget.db.client import Client from pfbudget.db.model import ( Bank, BankTransaction, + Base, Category, CategoryGroup, MoneyTransaction, @@ -123,9 +124,6 @@ class TestBackup: client = MockClient() client.insert([e for t in params for e in t[0]]) - originals = client.select(Transaction) - - assert originals command = BackupCommand(client, file, ExportFormat.JSON) command.execute() @@ -134,6 +132,13 @@ class TestBackup: command = ImportBackupCommand(other, file, ExportFormat.JSON) command.execute() - imported = other.select(Transaction) + def subclasses(cls: Type[Any]) -> set[Type[Any]]: + return set(cls.__subclasses__()) | { + s for c in cls.__subclasses__() for s in subclasses(c) + } - assert originals == imported + for t in [cls for cls in subclasses(Base)]: + originals = client.select(t) + imported = other.select(t) + + assert originals == imported, f"{t}"