[Fix] Eager loading for subclasses
and CategoryGroup import/export.
This commit is contained in:
parent
e6622d1e19
commit
d11f753aa0
@ -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",
|
||||
}
|
||||
|
||||
@ -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}"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user