# Path: src/schemas/messages.py
# class MessageStatus(str, Enum):
#     """
#     Combined MandrillMessageStatus and MessageBirdMessageStatus
# 
#     Should match MESSAGE_STATUSES sql enum
#     """
# 
#     render_failed = 'render_failed'
#     send_request_failed = 'send_request_failed'
# 
#     send = 'send'
#     deferral = 'deferral'
#     hard_bounce = 'hard_bounce'
#     soft_bounce = 'soft_bounce'
#     open = 'open'
#     click = 'click'
#     spam = 'spam'
#     unsub = 'unsub'
#     reject = 'reject'
# 
#     # used for sms
#     scheduled = 'scheduled'
#     # send = 'send'  # above
#     buffered = 'buffered'
#     delivered = 'delivered'
#     expired = 'expired'
#     delivery_failed = 'delivery_failed'
# 
# class SendMethod(str, Enum):
#     """
#     Should match SEND_METHODS sql enum
#     """
# 
#     email_mandrill = 'email-mandrill'
#     email_ses = 'email-ses'
#     email_test = 'email-test'
#     sms_messagebird = 'sms-messagebird'
#     sms_test = 'sms-test'


import json
from datetime import datetime
from markupsafe import Markup
from pydantic import UUID4, BaseModel, Json, PositiveInt
from typing import List, Optional
from src.schemas.messages import MessageStatus, SendMethod



class Company(BaseModel):
    id: PositiveInt
    code: str


class MessageGroup(BaseModel):
    id: PositiveInt
    uuid: UUID4
    company_id: PositiveInt
    message_method: SendMethod
    created_ts: datetime
    from_email: str
    from_name: str


class Message(BaseModel):
    id: PositiveInt
    external_id: Optional[str] = ''
    group_id: Optional[PositiveInt]
    company_id: Optional[PositiveInt]


# Path: src/schemas/messages.py
# class MessageStatus(str, Enum):
#     """
#     Combined MandrillMessageStatus and MessageBirdMessageStatus
# 
#     Should match MESSAGE_STATUSES sql enum
#     """
# 
#     render_failed = 'render_failed'
#     send_request_failed = 'send_request_failed'
# 
#     send = 'send'
#     deferral = 'deferral'
#     hard_bounce = 'hard_bounce'
#     soft_bounce = 'soft_bounce'
#     open = 'open'
#     click = 'click'
#     spam = 'spam'
#     unsub = 'unsub'
#     reject = 'reject'
# 
#     # used for sms
#     scheduled = 'scheduled'
#     # send = 'send'  # above
#     buffered = 'buffered'
#     delivered = 'delivered'
#     expired = 'expired'
#     delivery_failed = 'delivery_failed'
# 
# class SendMethod(str, Enum):
#     """
#     Should match SEND_METHODS sql enum
#     """
# 
#     email_mandrill = 'email-mandrill'
#     email_ses = 'email-ses'
#     email_test = 'email-test'
#     sms_messagebird = 'sms-messagebird'
#     sms_test = 'sms-test'


# Path: src/schemas/models.py
import json
from datetime import datetime
from markupsafe import Markup
from pydantic import UUID4, BaseModel, Json, PositiveInt
from typing import List, Optional
from src.schemas.messages import MessageStatus, SendMethod




class Company(BaseModel):
    id: PositiveInt
    code: str


class MessageGroup(BaseModel):
    id: PositiveInt
    uuid: UUID4
    company_id: PositiveInt
    message_method: SendMethod
    created_ts: datetime
    from_email: str
    from_name: str


class Message(BaseModel):
    id: PositiveInt
    external_id: Optional[str] = ''
    group_id: Optional[PositiveInt]
    company_id: Optional[PositiveInt]


    method: SendMethod