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 i64) veb.Result { req := json.decode(models.TelegramIntegrationCreateReq,ctx.req.data)or { return ctx.request_error('Failed parse request body: $err') } mut integration := models.TelegramIntegration{ account_id: '123' // todo middleware quiz_id: quizID bot_token: req.bot_token repeatable: false bot_name: '123' deleted: false } // 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 { 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") } @['/:quizID'; delete] fn (mut c IntegrationControllers) delete(mut ctx veb.Context,quizID int) veb.Result { println(quizID) return ctx.text('delete') }