[DB] Rules collection using list instead of set
There pains of using a set as the aggregation of rules overweight the small advantage. While it would make detecting similar rules faster, the use of a collection type not inherently supporting by JSON brings some issues in the serialization.
This commit is contained in:
parent
ec22b5e5bd
commit
271130b107
@ -323,7 +323,7 @@ class Manager:
|
||||
for rule in rules:
|
||||
del rule["type"]
|
||||
|
||||
category.rules = set(CategoryRule(**rule) for rule in rules)
|
||||
category.rules = [CategoryRule(**rule) for rule in rules]
|
||||
if row["schedule"]:
|
||||
category.schedule = CategorySchedule(**row["schedule"])
|
||||
categories.append(category)
|
||||
|
||||
@ -180,8 +180,8 @@ class Category(Base, Export):
|
||||
ForeignKey(CategoryGroup.name), default=None
|
||||
)
|
||||
|
||||
rules: Mapped[set[CategoryRule]] = relationship(
|
||||
cascade="all, delete-orphan", passive_deletes=True, default_factory=set
|
||||
rules: Mapped[list[CategoryRule]] = relationship(
|
||||
cascade="all, delete-orphan", passive_deletes=True, default_factory=list
|
||||
)
|
||||
schedule: Mapped[Optional[CategorySchedule]] = relationship(
|
||||
cascade="all, delete-orphan", passive_deletes=True, default=None
|
||||
@ -267,8 +267,8 @@ class Tag(Base):
|
||||
|
||||
name: Mapped[str] = mapped_column(primary_key=True)
|
||||
|
||||
rules: Mapped[set[TagRule]] = relationship(
|
||||
cascade="all, delete-orphan", passive_deletes=True, default_factory=set
|
||||
rules: Mapped[list[TagRule]] = relationship(
|
||||
cascade="all, delete-orphan", passive_deletes=True, default_factory=list
|
||||
)
|
||||
|
||||
|
||||
@ -320,7 +320,7 @@ class Link(Base):
|
||||
link: Mapped[idfk] = mapped_column(primary_key=True)
|
||||
|
||||
|
||||
class Rule(Base, Export, init=False, unsafe_hash=True):
|
||||
class Rule(Base, Export, init=False):
|
||||
__tablename__ = "rules"
|
||||
|
||||
id: Mapped[idpk] = mapped_column(init=False)
|
||||
|
||||
@ -6,7 +6,7 @@ category_null = Category("null")
|
||||
|
||||
category1 = Category(
|
||||
"cat#1",
|
||||
rules={CategoryRule("cat#1", description="desc#1", max=Decimal(0))},
|
||||
rules=[CategoryRule("cat#1", description="desc#1", max=Decimal(0))],
|
||||
)
|
||||
|
||||
tag_1 = Tag("tag#1", rules={TagRule("tag#1", description="desc#1", max=Decimal(0))})
|
||||
tag_1 = Tag("tag#1", rules=[TagRule("tag#1", description="desc#1", max=Decimal(0))])
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user