41 lines
961 B
Python
41 lines
961 B
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from dataclasses import dataclass
|
||
|
|
from uuid import UUID
|
||
|
|
|
||
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||
|
|
|
||
|
|
from models.user_feedback import UserFeedback
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass
|
||
|
|
class FeedbackRepository:
|
||
|
|
session: AsyncSession
|
||
|
|
|
||
|
|
async def create_feedback(
|
||
|
|
self,
|
||
|
|
*,
|
||
|
|
user_id: UUID | None,
|
||
|
|
feedback_type: str,
|
||
|
|
content: str,
|
||
|
|
images: list[str],
|
||
|
|
device_info: dict,
|
||
|
|
app_version: str,
|
||
|
|
os_version: str,
|
||
|
|
) -> UserFeedback:
|
||
|
|
feedback = UserFeedback(
|
||
|
|
user_id=user_id,
|
||
|
|
feedback_type=feedback_type,
|
||
|
|
content=content,
|
||
|
|
images=images,
|
||
|
|
device_info=device_info,
|
||
|
|
app_version=app_version,
|
||
|
|
os_version=os_version,
|
||
|
|
)
|
||
|
|
self.session.add(feedback)
|
||
|
|
await self.session.flush()
|
||
|
|
return feedback
|
||
|
|
|
||
|
|
async def save(self) -> None:
|
||
|
|
await self.session.commit()
|