Update routes/onboarding.py
Browse files- routes/onboarding.py +33 -0
routes/onboarding.py
CHANGED
@@ -77,6 +77,39 @@ async def update_onboarding_question(payload: UpdateOnboardingQuestion = Body(..
|
|
77 |
logger.error(f"❌ Erro interno ao atualizar pergunta: {str(e)}")
|
78 |
raise HTTPException(status_code=500, detail="Erro interno do servidor")
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
@router.delete("/onboarding/delete-question")
|
81 |
async def delete_onboarding_question(id: int = Query(..., description="ID da pergunta a ser deletada")):
|
82 |
"""
|
|
|
77 |
logger.error(f"❌ Erro interno ao atualizar pergunta: {str(e)}")
|
78 |
raise HTTPException(status_code=500, detail="Erro interno do servidor")
|
79 |
|
80 |
+
@router.post("/onboarding/add-question")
|
81 |
+
async def add_onboarding_question(payload: UpdateOnboardingQuestion = Body(...)):
|
82 |
+
"""
|
83 |
+
Adiciona uma nova pergunta de onboarding com base nos dados fornecidos.
|
84 |
+
Todos os campos do payload são enviados para criação.
|
85 |
+
"""
|
86 |
+
try:
|
87 |
+
new_question = {
|
88 |
+
"id": payload.id,
|
89 |
+
"title": payload.title,
|
90 |
+
"question_type": payload.question_type,
|
91 |
+
"optional": payload.optional,
|
92 |
+
"options": payload.options
|
93 |
+
}
|
94 |
+
|
95 |
+
query_url = f"{SUPABASE_URL}/rest/v1/Onboarding"
|
96 |
+
headers = SUPABASE_ROLE_HEADERS.copy()
|
97 |
+
headers["Prefer"] = "return=representation"
|
98 |
+
|
99 |
+
async with aiohttp.ClientSession() as session:
|
100 |
+
async with session.post(query_url, json=new_question, headers=headers) as response:
|
101 |
+
if response.status not in (200, 201):
|
102 |
+
detail = await response.text()
|
103 |
+
logger.error(f"❌ Erro ao adicionar pergunta: {detail}")
|
104 |
+
raise HTTPException(status_code=response.status, detail="Erro ao adicionar pergunta")
|
105 |
+
|
106 |
+
created = await response.json()
|
107 |
+
return {"message": "✅ Pergunta adicionada com sucesso!", "created": created}
|
108 |
+
|
109 |
+
except Exception as e:
|
110 |
+
logger.error(f"❌ Erro interno ao adicionar pergunta: {str(e)}")
|
111 |
+
raise HTTPException(status_code=500, detail="Erro interno do servidor")
|
112 |
+
|
113 |
@router.delete("/onboarding/delete-question")
|
114 |
async def delete_onboarding_question(id: int = Query(..., description="ID da pergunta a ser deletada")):
|
115 |
"""
|