feat: set default state to Inactive, optional title/text with defaults, auto-raise ClassifiedAdCreated

This commit is contained in:
2026-07-29 02:20:25 -04:00
parent b8507e8941
commit 2cb5045836
2 changed files with 35 additions and 25 deletions

View File

@@ -9,6 +9,7 @@ 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 (
ClassifiedAdCreated,
ClassifiedAdPriceUpdated,
ClassifiedAdSentForReview,
ClassifiedAdTextUpdated,
@@ -26,12 +27,18 @@ from domain.marketplace.user_id import UserId
class ClassifiedAd(Entity):
id: ClassifiedAdId
_ownerId: UserId
title: ClassifiedAdTitle
text: ClassifiedAdText
title: ClassifiedAdTitle = field(default_factory=lambda: ClassifiedAdTitle(title=""))
text: ClassifiedAdText = field(default_factory=lambda: ClassifiedAdText(text=""))
price: Price = field(default_factory=lambda: Price(amount=Decimal("0.00")))
state: ClassifiedAdState | None = None
state: ClassifiedAdState = ClassifiedAdState.Inactive
_events: tuple[DomainEvent, ...] = ()
def __post_init__(self):
if not self._events:
object.__setattr__(self, '_events', (
ClassifiedAdCreated(id=self.id.value, owner_id=self._ownerId.value),
))
def _ensure_valid_state(self):
errors = []
if not self.title.title: