Files
social-app/backend/src/v1/memories/router.py
T

84 lines
2.6 KiB
Python
Raw Normal View History

from __future__ import annotations
from typing import Annotated
from fastapi import APIRouter, Depends, status
from schemas.memories.memory_content import UserMemoryContent, WorkProfileContent
from v1.memories.dependencies import get_memories_service
from v1.memories.schemas import (
MemoryListResponse,
UserMemoryPartialUpdate,
UserMemoryUpdate,
WorkMemoryPartialUpdate,
WorkMemoryUpdate,
)
from v1.memories.service import MemoriesService
router = APIRouter(prefix="/memories", tags=["memories"])
@router.get("", response_model=MemoryListResponse)
async def get_all_memories(
service: Annotated[MemoriesService, Depends(get_memories_service)],
) -> MemoryListResponse:
result = await service.get_all_memories()
return MemoryListResponse(
user_memory=result["user_memory"],
work_memory=result["work_memory"],
)
@router.get("/user", response_model=UserMemoryContent | None)
async def get_user_memory(
service: Annotated[MemoriesService, Depends(get_memories_service)],
) -> UserMemoryContent | None:
return await service.get_user_memory()
@router.get("/work", response_model=WorkProfileContent | None)
async def get_work_memory(
service: Annotated[MemoriesService, Depends(get_memories_service)],
) -> WorkProfileContent | None:
return await service.get_work_memory()
@router.put("/user", response_model=UserMemoryContent, status_code=status.HTTP_200_OK)
async def update_user_memory(
payload: UserMemoryUpdate,
service: Annotated[MemoriesService, Depends(get_memories_service)],
) -> UserMemoryContent:
return await service.update_user_memory(
content=payload.content,
)
@router.put("/work", response_model=WorkProfileContent, status_code=status.HTTP_200_OK)
async def update_work_memory(
payload: WorkMemoryUpdate,
service: Annotated[MemoriesService, Depends(get_memories_service)],
) -> WorkProfileContent:
return await service.update_work_memory(
content=payload.content,
)
@router.patch("/user", response_model=UserMemoryContent)
async def patch_user_memory(
payload: UserMemoryPartialUpdate,
service: Annotated[MemoriesService, Depends(get_memories_service)],
) -> UserMemoryContent:
return await service.patch_user_memory(
content=payload.content,
)
@router.patch("/work", response_model=WorkProfileContent)
async def patch_work_memory(
payload: WorkMemoryPartialUpdate,
service: Annotated[MemoriesService, Depends(get_memories_service)],
) -> WorkProfileContent:
return await service.patch_work_memory(
content=payload.content,
)