Files
tgex-backend/src/domain/creative.py
Artem Tsyrulnikov af32e2a507 feat: add workspace
2025-12-13 22:09:55 +03:00

39 lines
1.1 KiB
Python

import enum
from typing import TYPE_CHECKING
from uuid import UUID
from tortoise import fields
from .base import TimestampedModel
if TYPE_CHECKING:
from .target_channel import TargetChannel
from .workspace import Workspace
class CreativeStatus(str, enum.Enum):
ACTIVE = 'active'
ARCHIVED = 'archived'
class Creative(TimestampedModel):
id = fields.UUIDField(pk=True)
name = fields.CharField(max_length=255)
text = fields.TextField()
status = fields.CharEnumField(CreativeStatus, default=CreativeStatus.ACTIVE)
placements_count = fields.IntField(default=0)
workspace: fields.ForeignKeyRelation['Workspace'] = fields.ForeignKeyField(
'models.Workspace', related_name='creatives', on_delete=fields.CASCADE, index=True
)
target_channel: fields.ForeignKeyRelation['TargetChannel'] = fields.ForeignKeyField(
'models.TargetChannel', related_name='creatives', on_delete=fields.CASCADE, index=True
)
if TYPE_CHECKING:
workspace_id: UUID
target_channel_id: UUID
class Meta:
table = 'creative'