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'