telegram/controllers/integration.v

51 lines
1.3 KiB
V

module controllers
import repository
import veb
import models
import json
pub struct IntegrationControllers {
pub mut:
repo repository.Repo
}
@['/:quizID'; get]
fn (mut c IntegrationControllers) get(mut ctx veb.Context,quizID i64) veb.Result {
integration := c.repo.get_integration_by_id(quizID) or {
return ctx.server_error('Error getting integration: $err')
}
return ctx.json(integration)
}
@['/:quizID'; post]
fn (mut c IntegrationControllers) create(mut ctx veb.Context,quizID int) veb.Result {
mut integration := json.decode(models.TelegramIntegration,ctx.req.data)or {
return ctx.request_error('Failed parse request body: $err')
}
integration.quiz_id = quizID
if integration.account_id == "" || integration.bot_name == "" || integration.bot_token == ""{
return ctx.request_error('Missing required fields')
}
id := c.repo.create_integration(integration) or {
return ctx.server_error('Failed create integration: $err')
}
integration.id = id
return ctx.json(integration)
}
@['/:quizID'; patch]
fn (mut c IntegrationControllers) update(mut ctx veb.Context,quizID int) veb.Result {
println(quizID)
return ctx.text('update')
}
@['/:quizID'; delete]
fn (mut c IntegrationControllers) delete(mut ctx veb.Context,quizID int) veb.Result {
println(quizID)
return ctx.text('delete')
}