feat(review): add soft delete button to remove posts from admin channel while preserving deduplication state

This commit is contained in:
mamad
2026-08-27 22:15:43 +03:30
parent 26cd91a48f
commit e66ed361c3
4 changed files with 26 additions and 5 deletions
+1
View File
@@ -72,6 +72,7 @@ CREATE TABLE IF NOT EXISTS settings (
ALTER TABLE targets ADD COLUMN IF NOT EXISTS personality TEXT DEFAULT '';
ALTER TABLE targets ADD COLUMN IF NOT EXISTS custom_footer TEXT DEFAULT '';
ALTER TABLE posts ADD COLUMN IF NOT EXISTS published_to JSONB DEFAULT '[]'::jsonb;
ALTER TABLE posts ADD COLUMN IF NOT EXISTS is_deleted BOOLEAN DEFAULT FALSE;
"""
_pool: Optional[asyncpg.Pool] = None
+2 -1
View File
@@ -40,8 +40,9 @@ class Post:
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
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
+5
View File
@@ -209,3 +209,8 @@ class Repository:
pool = await self._get_pool()
async with pool.acquire() as conn:
await conn.execute("UPDATE posts SET status = 'rejected' WHERE id = $1;", post_id)
async def soft_delete_post(self, post_id: int) -> None:
pool = await self._get_pool()
async with pool.acquire() as conn:
await conn.execute("UPDATE posts SET is_deleted = TRUE, status = 'deleted' WHERE id = $1;", post_id)