feat: create message capture policies

This commit is contained in:
h
2026-05-29 16:47:02 +02:00
parent 62aac0bf32
commit 920a0235e2
15 changed files with 700 additions and 5 deletions
+36
View File
@@ -0,0 +1,36 @@
from typing import Annotated
import asyncpg
from dishka.integrations.fastapi import FromDishka, inject
from fastapi import APIRouter, Query
from utils.policy import repository
from utils.policy.models import FolderSpec
router = APIRouter(prefix="/api/folders", tags=["folders"])
def _serialize(spec: FolderSpec) -> dict:
return {
"folder_id": spec.folder_id,
"order_index": spec.order_index,
"title": spec.title,
"include_ids": sorted(spec.include_ids),
"exclude_ids": sorted(spec.exclude_ids),
"pinned_ids": sorted(spec.pinned_ids),
"contacts": spec.contacts,
"non_contacts": spec.non_contacts,
"groups": spec.groups,
"broadcasts": spec.broadcasts,
"bots": spec.bots,
"is_chatlist": spec.is_chatlist,
}
@router.get("")
@inject
async def list_folders(
pool: FromDishka[asyncpg.Pool], account_id: Annotated[int, Query()]
) -> list[dict]:
folders = await repository.list_folders(pool, account_id)
return [_serialize(spec) for spec in folders]