Files
copykar/db/models.py
T

52 lines
1.4 KiB
Python

from dataclasses import dataclass, field
from typing import Optional, List
@dataclass
class SourceChannel:
id: Optional[int]
channel_id: int
username: Optional[str]
title: Optional[str]
is_active: bool = True
created_at: Optional[str] = None
@dataclass
class TargetChannel:
id: Optional[int]
channel_id: int
title: Optional[str]
username: Optional[str]
post_interval_min: int = 30
last_post_time: Optional[str] = None
is_active: bool = True
created_at: Optional[str] = None
@dataclass
class Post:
id: Optional[int]
source_channel_id: int
source_message_id: int
raw_text: Optional[str]
media_path: Optional[str] = None
media_type: Optional[str] = None
content_hash: Optional[str] = None
tags: List[str] = field(default_factory=list)
is_duplicate: bool = False
duplicate_of_id: Optional[int] = None
similarity_reason: Optional[str] = None
subject: Optional[str] = None
ai_text: Optional[str] = None
suggested_target_id: Optional[int] = None
target_channel_id: Optional[int] = None
status: str = "pending_ai" # pending_ai, pending_review, approved, scheduled, published, rejected
review_message_id: Optional[int] = None
scheduled_at: Optional[str] = None
published_at: Optional[str] = None
created_at: Optional[str] = None
@dataclass
class Setting:
key: str
value: str
description: Optional[str] = None