feat: add UpdateText and UpdatePrice to ClassifiedAd with domain events

This commit is contained in:
2026-07-29 02:14:24 -04:00
parent 2cf514995d
commit 035cfdf4fc
2 changed files with 118 additions and 0 deletions

View File

@@ -9,6 +9,8 @@ from domain.marketplace.classified_ad_state import ClassifiedAdState
from domain.marketplace.classified_ad_text import ClassifiedAdText
from domain.marketplace.classified_ad_title import ClassifiedAdTitle
from domain.marketplace.domain_event import (
ClassifiedAdPriceUpdated,
ClassifiedAdTextUpdated,
ClassifiedAdTitleChanged,
DomainEvent,
)
@@ -54,3 +56,17 @@ class ClassifiedAd(Entity):
return updated.raise_event(
ClassifiedAdTitleChanged(id=self.id.value, title=title.title)
)
def update_text(self, text: ClassifiedAdText) -> ClassifiedAd:
updated = replace(self, text=text)
updated._ensure_valid_state()
return updated.raise_event(
ClassifiedAdTextUpdated(id=self.id.value, ad_text=text.text)
)
def update_price(self, price: Price) -> ClassifiedAd:
updated = replace(self, price=price)
updated._ensure_valid_state()
return updated.raise_event(
ClassifiedAdPriceUpdated(id=self.id.value, price=price.amount)
)