added another sql repo methods
This commit is contained in:
parent
e71a8b8ccf
commit
11d46ada2a
@ -15,30 +15,6 @@ pub struct Question {
|
||||
buttons []Button @[json: 'Buttons']
|
||||
}
|
||||
|
||||
pub struct TelegramIntegration {
|
||||
pub mut:
|
||||
id i64
|
||||
account_id string
|
||||
quiz_id string
|
||||
bot_token string
|
||||
repeatable bool
|
||||
name string
|
||||
description string
|
||||
deleted bool
|
||||
}
|
||||
|
||||
|
||||
pub struct RespondentState {
|
||||
pub mut:
|
||||
id i64
|
||||
telegram_id i64
|
||||
quiz_id i64
|
||||
state string
|
||||
lang string
|
||||
contact string
|
||||
finish bool
|
||||
}
|
||||
|
||||
[table: 'question']
|
||||
pub struct QuizQuestion {
|
||||
pub mut:
|
||||
|
@ -35,6 +35,36 @@ pub fn (mut r Repo)get_next_que_data(state string)!models.Question{
|
||||
return error('empty')
|
||||
}
|
||||
|
||||
// методы QuizRespondentState
|
||||
// вызывается при /start, создает запись
|
||||
pub fn (mut r Repo) create_state(state models.RespondentState) ! {
|
||||
sql r.pg_db {
|
||||
insert state into models.RespondentState
|
||||
} or {
|
||||
return error('Failed insert state: $err')
|
||||
}
|
||||
}
|
||||
|
||||
// вызывать при любом другом, кроме вопроса с типом result
|
||||
pub fn (mut r Repo) update_state(id i64, new_state string) ! {
|
||||
sql r.pg_db {
|
||||
update models.RespondentState set state = new_state where id == id
|
||||
} or {
|
||||
return error('Failed update state: $err')
|
||||
}
|
||||
}
|
||||
|
||||
// выставляется при типе вопроса result = true
|
||||
pub fn (mut r Repo) finish_state(id i64) ! {
|
||||
sql r.pg_db {
|
||||
update models.RespondentState set finish = true where id == id
|
||||
} or {
|
||||
return error('Failed finish state: $err')
|
||||
}
|
||||
}
|
||||
|
||||
// методы с question
|
||||
// получение вопроса по id
|
||||
pub fn (mut r Repo) get_question_by_id(id i64) !models.QuizQuestion {
|
||||
question := sql r.pg_db {
|
||||
select from models.QuizQuestion where id == id && deleted == false
|
||||
@ -43,4 +73,43 @@ pub fn (mut r Repo) get_question_by_id(id i64) !models.QuizQuestion {
|
||||
}
|
||||
|
||||
return question[0]
|
||||
}
|
||||
|
||||
// методы TelegramIntegration
|
||||
// получение интеграции по id
|
||||
pub fn (mut r Repo) get_integration_by_id(id i64) !models.TelegramIntegration {
|
||||
integration := sql r.pg_db {
|
||||
select from models.TelegramIntegration where id == id && deleted == false limit 1
|
||||
} or {
|
||||
return error('Integration not found')
|
||||
}
|
||||
return integration[0]
|
||||
}
|
||||
|
||||
// создает запись о интеграции
|
||||
pub fn (mut r Repo) create_integration(integration models.TelegramIntegration) ! {
|
||||
sql r.pg_db {
|
||||
insert integration into models.TelegramIntegration
|
||||
} or {
|
||||
return error('Failed create integration: $err')
|
||||
}
|
||||
}
|
||||
|
||||
// обновляет токен бота
|
||||
pub fn (mut r Repo) update_bot_token(id i64, new_token string) ! {
|
||||
sql r.pg_db {
|
||||
update models.TelegramIntegration set bot_token = new_token where id == id && deleted == false
|
||||
} or {
|
||||
return error('Failed to update bot token: $err')
|
||||
}
|
||||
}
|
||||
|
||||
// обновляет поля ниже токена
|
||||
pub fn (mut r Repo) update_integration_fields(id i64, integration models.TelegramIntegration) ! {
|
||||
sql r.pg_db {
|
||||
update models.TelegramIntegration set repeatable = integration.repeatable, name = integration.name,
|
||||
description = integration.description, deleted = integration.deleted where id == id && deleted == false
|
||||
} or {
|
||||
return error('Failed update integration fields: $err')
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user