Files
copykar/db/models.py
T

59 lines
1.6 KiB
Python

from dataclasses import dataclass, field
from typing import Optional, List, Dict, Any
@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
personality: str = ""
custom_footer: str = ""
sleep_start_hour: int = 0
sleep_end_hour: int = 0
is_sleep_enabled: bool = False
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_review" # pending_review, published, rejected, deleted
published_to: List[Dict[str, Any]] = field(default_factory=list)
is_deleted: bool = False
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