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']
|
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']
|
[table: 'question']
|
||||||
pub struct QuizQuestion {
|
pub struct QuizQuestion {
|
||||||
pub mut:
|
pub mut:
|
||||||
|
@ -35,6 +35,36 @@ pub fn (mut r Repo)get_next_que_data(state string)!models.Question{
|
|||||||
return error('empty')
|
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 {
|
pub fn (mut r Repo) get_question_by_id(id i64) !models.QuizQuestion {
|
||||||
question := sql r.pg_db {
|
question := sql r.pg_db {
|
||||||
select from models.QuizQuestion where id == id && deleted == false
|
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]
|
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