feat: create message capture policies
This commit is contained in:
@@ -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]
|
||||
Reference in New Issue
Block a user