fix_gigachat_privilege #21

Merged
skeris merged 4 commits from fix_gigachat_privilege into main 2025-06-10 11:44:59 +00:00
8 changed files with 45 additions and 5 deletions

@ -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;

@ -0,0 +1 @@
ALTER TABLE quiz DROP COLUMN IF EXISTS gigachat;

@ -0,0 +1 @@
ALTER TABLE quiz ADD COLUMN gigachat boolean NOT NULL DEFAULT false;

@ -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 {

@ -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

@ -68,6 +68,8 @@ type Quiz struct {
Super bool `json:"super"`
GroupId uint64 `json:"group_id"`
GigaChat bool `json:"giga_chat"`
}
type QuizConfig struct {

@ -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
@ -739,3 +740,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
}

@ -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