2024-08-12 16:57:40 +03:00
|
|
|
from fastapi import APIRouter
|
|
|
|
from sqlalchemy import select
|
|
|
|
|
|
|
|
import database
|
2024-08-12 17:02:12 +03:00
|
|
|
from models import FormData, Form, BaseModel
|
2024-08-12 16:57:40 +03:00
|
|
|
from .utils import User
|
|
|
|
|
|
|
|
router = APIRouter(prefix="/form")
|
|
|
|
|
|
|
|
|
2024-08-12 17:02:12 +03:00
|
|
|
class CreateForm(BaseModel):
|
|
|
|
form_id: int
|
|
|
|
|
|
|
|
|
2024-08-12 16:57:40 +03:00
|
|
|
@router.post("/create")
|
2024-08-12 17:02:12 +03:00
|
|
|
async def create_form(user: User, form_data: FormData) -> CreateForm:
|
2024-08-12 16:57:40 +03:00
|
|
|
async with database.sessions.begin() as session:
|
|
|
|
form = database.Form(
|
|
|
|
name=form_data.name, owner_id=user.id, data=form_data.model_dump()
|
|
|
|
)
|
|
|
|
|
|
|
|
session.add(form)
|
|
|
|
await session.flush()
|
|
|
|
await session.refresh(form)
|
|
|
|
|
2024-08-12 17:02:12 +03:00
|
|
|
return CreateForm(form_id=form.id)
|
2024-08-12 16:57:40 +03:00
|
|
|
|
|
|
|
|
|
|
|
@router.get("/my")
|
|
|
|
async def user_forms(user: User):
|
|
|
|
async with database.sessions.begin() as session:
|
|
|
|
return {
|
|
|
|
"forms": [
|
|
|
|
Form.model_validate(item)
|
|
|
|
for item in await session.scalars(
|
|
|
|
select(database.Form).where(database.Form.owner_id == user.id)
|
|
|
|
)
|
|
|
|
]
|
|
|
|
}
|