telegram/controllers/integration.v

96 lines
2.3 KiB
Coq
Raw Normal View History

2024-08-18 13:26:33 +00:00
module controllers
import repository
import veb
2024-08-19 09:13:40 +00:00
import models
import json
2024-08-20 12:20:06 +00:00
import utils
2024-08-18 13:26:33 +00:00
pub struct IntegrationControllers {
pub mut:
repo repository.Repo
}
@['/:quizID'; get]
2024-08-18 13:50:27 +00:00
fn (mut c IntegrationControllers) get(mut ctx veb.Context,quizID i64) veb.Result {
2024-08-20 13:14:42 +00:00
account_id := utils.jwt_auth(mut ctx)
if account_id == ""{
2024-08-20 12:20:06 +00:00
return ctx.request_error("empty jwt")
}
2024-08-18 13:50:27 +00:00
integration := c.repo.get_integration_by_id(quizID) or {
return ctx.server_error('Error getting integration: $err')
}
return ctx.json(integration)
2024-08-18 13:26:33 +00:00
}
@['/:quizID'; post]
2024-08-19 09:26:46 +00:00
fn (mut c IntegrationControllers) create(mut ctx veb.Context,quizID i64) veb.Result {
2024-08-20 13:14:42 +00:00
account_id := utils.jwt_auth(mut ctx)
if account_id==""{
2024-08-20 12:20:06 +00:00
return ctx.request_error("empty jwt")
}
2024-08-19 09:26:46 +00:00
req := json.decode(models.TelegramIntegrationCreateReq,ctx.req.data)or {
2024-08-19 09:13:40 +00:00
return ctx.request_error('Failed parse request body: $err')
}
2024-08-19 09:26:46 +00:00
mut integration := models.TelegramIntegration{
2024-08-20 15:44:49 +00:00
account_id: account_id
2024-08-19 09:26:46 +00:00
quiz_id: quizID
bot_token: req.bot_token
repeatable: false
2024-08-19 11:08:36 +00:00
bot_name: ''
2024-08-19 09:26:46 +00:00
deleted: false
2024-08-22 14:14:00 +00:00
status: models.active_status
2024-08-19 09:13:40 +00:00
}
2024-08-19 11:09:06 +00:00
if integration.account_id == "" || integration.bot_token == "" || integration.quiz_id==0{
2024-08-19 11:08:36 +00:00
return ctx.request_error('Missing required fields')
}
2024-08-19 09:26:46 +00:00
2024-08-19 09:13:40 +00:00
id := c.repo.create_integration(integration) or {
return ctx.server_error('Failed create integration: $err')
}
integration.id = id
return ctx.json(integration)
2024-08-18 13:26:33 +00:00
}
@['/:quizID'; patch]
2024-08-18 13:50:27 +00:00
fn (mut c IntegrationControllers) update(mut ctx veb.Context,quizID int) veb.Result {
2024-08-20 13:14:42 +00:00
account_id := utils.jwt_auth(mut ctx)
if account_id == ""{
2024-08-20 12:20:06 +00:00
return ctx.request_error("empty jwt")
}
2024-08-19 09:26:46 +00:00
req := json.decode(models.TelegramIntegrationUpdateReq,ctx.req.data)or {
return ctx.request_error('Failed parse request body: $err')
}
if req.id== 0 || req.bot_token == ""{
return ctx.request_error('Missing required fields')
}
c.repo.update_bot_token(req.id,req.bot_token) or {
return ctx.server_error('Failed update integration: $err')
}
return ctx.ok("OK")
2024-08-18 13:26:33 +00:00
}
@['/:quizID'; delete]
2024-08-19 09:40:37 +00:00
fn (mut c IntegrationControllers) delete(mut ctx veb.Context,quizID i64) veb.Result {
2024-08-20 13:14:42 +00:00
account_id := utils.jwt_auth(mut ctx)
if account_id==""{
2024-08-20 12:20:06 +00:00
return ctx.request_error("empty jwt")
}
2024-08-19 09:40:37 +00:00
if quizID == 0{
return ctx.request_error('quizID dont be 0')
}
c.repo.soft_delete_integration(quizID)or {
return ctx.server_error('Failed soft delete integration: $err')
}
return ctx.ok("OK")
2024-08-18 13:26:33 +00:00
}