From 2ca2a6d56f17bdce28b1796cdcaa558a7dcfa8e9 Mon Sep 17 00:00:00 2001 From: pasha1coil Date: Tue, 10 Jun 2025 12:38:48 +0300 Subject: [PATCH 1/4] update sql schema --- dal/db_query/queries.sql | 3 +++ dal/schema/000024_init.down.sql | 1 + dal/schema/000024_init.up.sql | 1 + model/model.go | 2 ++ sqlc.yaml | 2 ++ 5 files changed, 9 insertions(+) create mode 100644 dal/schema/000024_init.down.sql create mode 100644 dal/schema/000024_init.up.sql diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index b8eda7c..f84d215 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -1463,3 +1463,6 @@ INSERT INTO bitrixContact (AccountID, BitrixID, Field) VALUES ($1, $2, $3) RETUR -- name: UpdateBitrixContact :exec UPDATE bitrixContact SET Field = $1,BitrixID=$3 WHERE ID = $2; + +-- name: UpdateGigaChatQuizFlag :exec +UPDATE quiz SET gigachat = true where id = $1 AND accountid = $2 AND deleted = false; \ No newline at end of file diff --git a/dal/schema/000024_init.down.sql b/dal/schema/000024_init.down.sql new file mode 100644 index 0000000..249ee63 --- /dev/null +++ b/dal/schema/000024_init.down.sql @@ -0,0 +1 @@ +ALTER TABLE quiz DROP COLUMN IF EXISTS gigachat; \ No newline at end of file diff --git a/dal/schema/000024_init.up.sql b/dal/schema/000024_init.up.sql new file mode 100644 index 0000000..21deb16 --- /dev/null +++ b/dal/schema/000024_init.up.sql @@ -0,0 +1 @@ +ALTER TABLE quiz ADD COLUMN gigachat boolean NOT NULL DEFAULT false; \ No newline at end of file diff --git a/model/model.go b/model/model.go index db1eb7d..4c12ee3 100644 --- a/model/model.go +++ b/model/model.go @@ -68,6 +68,8 @@ type Quiz struct { Super bool `json:"super"` GroupId uint64 `json:"group_id"` + + GigaChat bool `json:"giga_chat"` } type QuizConfig struct { diff --git a/sqlc.yaml b/sqlc.yaml index d1fa689..1bfd7dd 100644 --- a/sqlc.yaml +++ b/sqlc.yaml @@ -48,6 +48,8 @@ packages: - "./dal/schema/000022_init.down.sql" - "./dal/schema/000023_init.up.sql" - "./dal/schema/000023_init.down.sql" + - "./dal/schema/000024_init.up.sql" + - "./dal/schema/000024_init.down.sql" engine: "postgresql" emit_json_tags: true emit_db_tags: true -- 2.45.2 From b455e6f07d709a3fc257189078b2a7ebab249e29 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 10 Jun 2025 12:42:26 +0300 Subject: [PATCH 2/4] update sqlc gen --- dal/sqlcgen/models.go | 1 + dal/sqlcgen/queries.sql.go | 28 +++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/dal/sqlcgen/models.go b/dal/sqlcgen/models.go index 67879e7..d4f2673 100644 --- a/dal/sqlcgen/models.go +++ b/dal/sqlcgen/models.go @@ -256,6 +256,7 @@ type Quiz struct { AnswersCount sql.NullInt32 `db:"answers_count" json:"answers_count"` AverageTimePassing sql.NullInt32 `db:"average_time_passing" json:"average_time_passing"` SessionsCount sql.NullInt32 `db:"sessions_count" json:"sessions_count"` + Gigachat bool `db:"gigachat" json:"gigachat"` } type RespondentState struct { diff --git a/dal/sqlcgen/queries.sql.go b/dal/sqlcgen/queries.sql.go index 2bc616a..07e1065 100644 --- a/dal/sqlcgen/queries.sql.go +++ b/dal/sqlcgen/queries.sql.go @@ -1399,7 +1399,7 @@ func (q *Queries) DeleteQuizAudience(ctx context.Context, arg DeleteQuizAudience } const deleteQuizByID = `-- name: DeleteQuizByID :one -UPDATE quiz SET deleted=true WHERE quiz.id=$1 AND accountid=$2 RETURNING quiz.id, quiz.qid, quiz.accountid, quiz.deleted, quiz.archived, quiz.fingerprinting, quiz.repeatable, quiz.note_prevented, quiz.mail_notifications, quiz.unique_answers, quiz.super, quiz.group_id, quiz.name, quiz.description, quiz.config, quiz.status, quiz.limit_answers, quiz.due_to, quiz.time_of_passing, quiz.pausable, quiz.version, quiz.version_comment, quiz.parent_ids, quiz.created_at, quiz.updated_at, quiz.questions_count, quiz.answers_count, quiz.average_time_passing, quiz.sessions_count +UPDATE quiz SET deleted=true WHERE quiz.id=$1 AND accountid=$2 RETURNING quiz.id, quiz.qid, quiz.accountid, quiz.deleted, quiz.archived, quiz.fingerprinting, quiz.repeatable, quiz.note_prevented, quiz.mail_notifications, quiz.unique_answers, quiz.super, quiz.group_id, quiz.name, quiz.description, quiz.config, quiz.status, quiz.limit_answers, quiz.due_to, quiz.time_of_passing, quiz.pausable, quiz.version, quiz.version_comment, quiz.parent_ids, quiz.created_at, quiz.updated_at, quiz.questions_count, quiz.answers_count, quiz.average_time_passing, quiz.sessions_count, quiz.gigachat ` type DeleteQuizByIDParams struct { @@ -1440,6 +1440,7 @@ func (q *Queries) DeleteQuizByID(ctx context.Context, arg DeleteQuizByIDParams) &i.AnswersCount, &i.AverageTimePassing, &i.SessionsCount, + &i.Gigachat, ) return i, err } @@ -3213,7 +3214,7 @@ func (q *Queries) GetQuizAudience(ctx context.Context, quizid int64) ([]Gigachat } const getQuizById = `-- name: GetQuizById :one -SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count FROM quiz WHERE id=$1 AND accountId=$2 +SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count, gigachat FROM quiz WHERE id=$1 AND accountId=$2 ` type GetQuizByIdParams struct { @@ -3254,12 +3255,13 @@ func (q *Queries) GetQuizById(ctx context.Context, arg GetQuizByIdParams) (Quiz, &i.AnswersCount, &i.AverageTimePassing, &i.SessionsCount, + &i.Gigachat, ) return i, err } const getQuizByQid = `-- name: GetQuizByQid :one -SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count FROM quiz +SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count, gigachat FROM quiz WHERE deleted = false AND archived = false AND @@ -3300,6 +3302,7 @@ func (q *Queries) GetQuizByQid(ctx context.Context, qid uuid.NullUUID) (Quiz, er &i.AnswersCount, &i.AverageTimePassing, &i.SessionsCount, + &i.Gigachat, ) return i, err } @@ -3321,7 +3324,7 @@ func (q *Queries) GetQuizConfig(ctx context.Context, id int64) (GetQuizConfigRow } const getQuizHistory = `-- name: GetQuizHistory :many -SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count FROM quiz WHERE quiz.id = $1 AND quiz.accountId = $4 OR quiz.id = ANY( +SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count, gigachat FROM quiz WHERE quiz.id = $1 AND quiz.accountId = $4 OR quiz.id = ANY( SELECT unnest(parent_ids) FROM quiz WHERE id = $1 ) ORDER BY quiz.id DESC LIMIT $2 OFFSET $3 ` @@ -3377,6 +3380,7 @@ func (q *Queries) GetQuizHistory(ctx context.Context, arg GetQuizHistoryParams) &i.AnswersCount, &i.AverageTimePassing, &i.SessionsCount, + &i.Gigachat, ); err != nil { return nil, err } @@ -5281,6 +5285,20 @@ func (q *Queries) UpdateFields(ctx context.Context, dollar_1 json.RawMessage) er return err } +const updateGigaChatQuizFlag = `-- name: UpdateGigaChatQuizFlag :exec +UPDATE quiz SET gigachat = true where id = $1 AND accountid = $2 AND deleted = false +` + +type UpdateGigaChatQuizFlagParams struct { + ID int64 `db:"id" json:"id"` + Accountid string `db:"accountid" json:"accountid"` +} + +func (q *Queries) UpdateGigaChatQuizFlag(ctx context.Context, arg UpdateGigaChatQuizFlagParams) error { + _, err := q.db.ExecContext(ctx, updateGigaChatQuizFlag, arg.ID, arg.Accountid) + return err +} + const updateLeadTarget = `-- name: UpdateLeadTarget :one UPDATE leadtarget SET target = $1,InviteLink = $2 WHERE id = $3 AND deleted=false RETURNING id, accountid, type, quizid, target, invitelink, deleted, createdat ` @@ -5546,7 +5564,7 @@ SET average_time_passing = COALESCE(sta.average_session_time, 0), sessions_count = COALESCE(sta.sess,0) FROM - (SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count FROM quiz WHERE deleted = FALSE AND archived = FALSE) q_sub + (SELECT id, qid, accountid, deleted, archived, fingerprinting, repeatable, note_prevented, mail_notifications, unique_answers, super, group_id, name, description, config, status, limit_answers, due_to, time_of_passing, pausable, version, version_comment, parent_ids, created_at, updated_at, questions_count, answers_count, average_time_passing, sessions_count, gigachat FROM quiz WHERE deleted = FALSE AND archived = FALSE) q_sub LEFT JOIN answer_aggregates aa ON q_sub.id = aa.quiz_id LEFT JOIN question_aggregates qa ON q_sub.id = qa.quiz_id LEFT JOIN session_times_aggregates sta ON q_sub.id = sta.quiz_id -- 2.45.2 From 6f4789f42acd08f169af6a17e0637baa8fc5410b Mon Sep 17 00:00:00 2001 From: Pasha Date: Tue, 10 Jun 2025 12:59:02 +0300 Subject: [PATCH 3/4] added new repo method UpdateGigaChatQuizFlag --- repository/quiz/quiz.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/repository/quiz/quiz.go b/repository/quiz/quiz.go index ec24a89..2aaff53 100644 --- a/repository/quiz/quiz.go +++ b/repository/quiz/quiz.go @@ -739,3 +739,14 @@ func (r *QuizRepository) CheckQuizOwner(ctx context.Context, accountID string, q return id == accountID, nil } + +func (r *QuizRepository) UpdateGigaChatQuizFlag(ctx context.Context, quizID int64, accountID string) error { + err := r.queries.UpdateGigaChatQuizFlag(ctx, sqlcgen.UpdateGigaChatQuizFlagParams{ + ID: quizID, + Accountid: accountID, + }) + if err != nil { + return err + } + return nil +} -- 2.45.2 From ce7096a3dd371ffcd52fd73bc959f0fa4384bfee Mon Sep 17 00:00:00 2001 From: Pasha Date: Tue, 10 Jun 2025 13:09:37 +0300 Subject: [PATCH 4/4] - --- repository/quiz/quiz.go | 1 + 1 file changed, 1 insertion(+) diff --git a/repository/quiz/quiz.go b/repository/quiz/quiz.go index 2aaff53..055d12b 100644 --- a/repository/quiz/quiz.go +++ b/repository/quiz/quiz.go @@ -575,6 +575,7 @@ func (r *QuizRepository) GetQuizById(ctx context.Context, accountId string, id u PassedCount: uint64(row.AnswersCount.Int32), AverageTime: uint64(row.AverageTimePassing.Int32), SessionCount: uint64(row.SessionsCount.Int32), + GigaChat: row.Gigachat, } return &piece, nil -- 2.45.2