From 901cf23820428ca624d112f73b399741d4631db9 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 16:25:43 +0300 Subject: [PATCH 1/8] missing condition deleted = false --- dal/db_query/queries.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index 8d22926..ddaf35e 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -710,7 +710,7 @@ WITH userd AS ( DELETE FROM tokens WHERE tokens.AccountID IN (SELECT AccountID FROM tokend); -- name: GetCurrentAccount :one -SELECT * FROM users WHERE AccountID = $1; +SELECT * FROM users WHERE AccountID = $1 AND Deleted = false; -- name: CheckMainUser :exec UPDATE users SET Name = $1, "Group" = $2, Email = $3, Role = $4 WHERE AmoID = $5; From 76daf28aeb0fb929053d7729f8cbdcd4b2dc64b7 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 16:45:11 +0300 Subject: [PATCH 2/8] delete unnecessary --- dal/db_query/queries.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index ddaf35e..3153b81 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -705,9 +705,9 @@ WITH userd AS ( SELECT AmoUserID FROM users WHERE users.AccountID = $1 ), tokend AS ( - UPDATE users SET Deleted = true WHERE AmoUserID IN (SELECT AmoUserID FROM userd) RETURNING users.AccountID + UPDATE users SET Deleted = true WHERE AmoUserID IN (SELECT AmoUserID FROM userd) ) -DELETE FROM tokens WHERE tokens.AccountID IN (SELECT AccountID FROM tokend); +DELETE FROM tokens WHERE tokens.AccountID = $1; -- name: GetCurrentAccount :one SELECT * FROM users WHERE AccountID = $1 AND Deleted = false; From a1c2bcc5f256c7fe1c806dd8e65bd733d618d5dc Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 16:55:20 +0300 Subject: [PATCH 3/8] update sqlc gen --- dal/sqlcgen/db.go | 2 +- dal/sqlcgen/models.go | 2 +- dal/sqlcgen/queries.sql.go | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dal/sqlcgen/db.go b/dal/sqlcgen/db.go index 6e5541c..7090fb4 100644 --- a/dal/sqlcgen/db.go +++ b/dal/sqlcgen/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.25.0 +// sqlc v1.26.0 package sqlcgen diff --git a/dal/sqlcgen/models.go b/dal/sqlcgen/models.go index 8507673..4844126 100644 --- a/dal/sqlcgen/models.go +++ b/dal/sqlcgen/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.25.0 +// sqlc v1.26.0 package sqlcgen diff --git a/dal/sqlcgen/queries.sql.go b/dal/sqlcgen/queries.sql.go index 06582b2..561466f 100644 --- a/dal/sqlcgen/queries.sql.go +++ b/dal/sqlcgen/queries.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.25.0 +// sqlc v1.26.0 // source: queries.sql package sqlcgen @@ -1454,7 +1454,7 @@ func (q *Queries) GetAllTokens(ctx context.Context) ([]Token, error) { } const getCurrentAccount = `-- name: GetCurrentAccount :one -SELECT id, accountid, amoid, name, email, role, "Group", deleted, createdat, subdomain, amouserid, country FROM users WHERE AccountID = $1 +SELECT id, accountid, amoid, name, email, role, "Group", deleted, createdat, subdomain, amouserid, country FROM users WHERE AccountID = $1 AND Deleted = false ` func (q *Queries) GetCurrentAccount(ctx context.Context, accountid string) (User, error) { @@ -3304,9 +3304,9 @@ WITH userd AS ( SELECT AmoUserID FROM users WHERE users.AccountID = $1 ), tokend AS ( - UPDATE users SET Deleted = true WHERE AmoUserID IN (SELECT AmoUserID FROM userd) RETURNING users.AccountID + UPDATE users SET Deleted = true WHERE AmoUserID IN (SELECT AmoUserID FROM userd) ) -DELETE FROM tokens WHERE tokens.AccountID IN (SELECT AccountID FROM tokend) +DELETE FROM tokens WHERE tokens.AccountID = $1 ` func (q *Queries) SoftDeleteAccount(ctx context.Context, accountid string) error { From 358c45a65e7c8619e2b14a49424244e979de39ad Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 18:30:34 +0300 Subject: [PATCH 4/8] predict some errors in get and set quiz rules --- dal/db_query/queries.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index 3153b81..6b12a6a 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -921,12 +921,12 @@ SELECT * FROM rules WHERE QuizID = $1 AND Deleted = false; -- name: SetQuizSettings :exec INSERT INTO rules (AccountID, QuizID, PerformerID, PipelineID, StepID, FieldsRule) SELECT u.AmoID AS AccountID,$1 AS QuizID,$2 AS PerformerID,$3 AS PipelineID, - $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6; + $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6 AND u.Deleted = false; -- name: ChangeQuizSettings :exec UPDATE rules SET PerformerID = $1,PipelineID = $2,StepID = $3,FieldsRule = $4 -WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $5) AND QuizID = $6 AND Deleted = false; +WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $5 AND users.Deleted = false) AND QuizID = $6 AND Deleted = false; -- name: GetQuestionListByIDs :many SELECT * FROM question WHERE id = ANY($1::int[]) AND deleted = FALSE; From 7bbfddd947be7ea3f660f2b49bd342e2e9a79660 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 18:32:14 +0300 Subject: [PATCH 5/8] update sqlc gen --- dal/sqlcgen/queries.sql.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dal/sqlcgen/queries.sql.go b/dal/sqlcgen/queries.sql.go index 561466f..503569e 100644 --- a/dal/sqlcgen/queries.sql.go +++ b/dal/sqlcgen/queries.sql.go @@ -117,7 +117,7 @@ func (q *Queries) ArchiveQuiz(ctx context.Context, arg ArchiveQuizParams) error const changeQuizSettings = `-- name: ChangeQuizSettings :exec UPDATE rules SET PerformerID = $1,PipelineID = $2,StepID = $3,FieldsRule = $4 -WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $5) AND QuizID = $6 AND Deleted = false +WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $5 AND users.Deleted = false) AND QuizID = $6 AND Deleted = false ` type ChangeQuizSettingsParams struct { @@ -3250,7 +3250,7 @@ func (q *Queries) QuizCopyQid(ctx context.Context, arg QuizCopyQidParams) (QuizC const setQuizSettings = `-- name: SetQuizSettings :exec INSERT INTO rules (AccountID, QuizID, PerformerID, PipelineID, StepID, FieldsRule) SELECT u.AmoID AS AccountID,$1 AS QuizID,$2 AS PerformerID,$3 AS PipelineID, - $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6 + $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6 AND u.Deleted = false ` type SetQuizSettingsParams struct { From d607d55cb4138e4860855f0f2b0b1cba2f3bcbe5 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 18:53:06 +0300 Subject: [PATCH 6/8] update sqlc gen --- dal/db_query/queries.sql | 10 ++++++---- dal/sqlcgen/queries.sql.go | 22 ++++++++++++++-------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index 6b12a6a..09a0085 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -918,15 +918,17 @@ SELECT * FROM tokens WHERE accountID = $1; -- name: GetQuizRule :one SELECT * FROM rules WHERE QuizID = $1 AND Deleted = false; --- name: SetQuizSettings :exec +-- name: SetQuizSettings :one INSERT INTO rules (AccountID, QuizID, PerformerID, PipelineID, StepID, FieldsRule) SELECT u.AmoID AS AccountID,$1 AS QuizID,$2 AS PerformerID,$3 AS PipelineID, - $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6 AND u.Deleted = false; + $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6 AND u.Deleted = false + RETURNING id; --- name: ChangeQuizSettings :exec +-- name: ChangeQuizSettings :one UPDATE rules SET PerformerID = $1,PipelineID = $2,StepID = $3,FieldsRule = $4 -WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $5 AND users.Deleted = false) AND QuizID = $6 AND Deleted = false; +WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $5 AND users.Deleted = false) AND QuizID = $6 AND Deleted = false +RETURNING id; -- name: GetQuestionListByIDs :many SELECT * FROM question WHERE id = ANY($1::int[]) AND deleted = FALSE; diff --git a/dal/sqlcgen/queries.sql.go b/dal/sqlcgen/queries.sql.go index 503569e..ff465d4 100644 --- a/dal/sqlcgen/queries.sql.go +++ b/dal/sqlcgen/queries.sql.go @@ -114,10 +114,11 @@ func (q *Queries) ArchiveQuiz(ctx context.Context, arg ArchiveQuizParams) error return err } -const changeQuizSettings = `-- name: ChangeQuizSettings :exec +const changeQuizSettings = `-- name: ChangeQuizSettings :one UPDATE rules SET PerformerID = $1,PipelineID = $2,StepID = $3,FieldsRule = $4 WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $5 AND users.Deleted = false) AND QuizID = $6 AND Deleted = false +RETURNING id ` type ChangeQuizSettingsParams struct { @@ -129,8 +130,8 @@ type ChangeQuizSettingsParams struct { Quizid int32 `db:"quizid" json:"quizid"` } -func (q *Queries) ChangeQuizSettings(ctx context.Context, arg ChangeQuizSettingsParams) error { - _, err := q.db.ExecContext(ctx, changeQuizSettings, +func (q *Queries) ChangeQuizSettings(ctx context.Context, arg ChangeQuizSettingsParams) (int64, error) { + row := q.db.QueryRowContext(ctx, changeQuizSettings, arg.Performerid, arg.Pipelineid, arg.Stepid, @@ -138,7 +139,9 @@ func (q *Queries) ChangeQuizSettings(ctx context.Context, arg ChangeQuizSettings arg.Accountid, arg.Quizid, ) - return err + var id int64 + err := row.Scan(&id) + return id, err } const checkAndAddDefault = `-- name: CheckAndAddDefault :exec @@ -3247,10 +3250,11 @@ func (q *Queries) QuizCopyQid(ctx context.Context, arg QuizCopyQidParams) (QuizC return i, err } -const setQuizSettings = `-- name: SetQuizSettings :exec +const setQuizSettings = `-- name: SetQuizSettings :one INSERT INTO rules (AccountID, QuizID, PerformerID, PipelineID, StepID, FieldsRule) SELECT u.AmoID AS AccountID,$1 AS QuizID,$2 AS PerformerID,$3 AS PipelineID, $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6 AND u.Deleted = false + RETURNING id ` type SetQuizSettingsParams struct { @@ -3262,8 +3266,8 @@ type SetQuizSettingsParams struct { Accountid string `db:"accountid" json:"accountid"` } -func (q *Queries) SetQuizSettings(ctx context.Context, arg SetQuizSettingsParams) error { - _, err := q.db.ExecContext(ctx, setQuizSettings, +func (q *Queries) SetQuizSettings(ctx context.Context, arg SetQuizSettingsParams) (int64, error) { + row := q.db.QueryRowContext(ctx, setQuizSettings, arg.Quizid, arg.Performerid, arg.Pipelineid, @@ -3271,7 +3275,9 @@ func (q *Queries) SetQuizSettings(ctx context.Context, arg SetQuizSettingsParams arg.Fieldsrule, arg.Accountid, ) - return err + var id int64 + err := row.Scan(&id) + return id, err } const settingDealAmoStatus = `-- name: SettingDealAmoStatus :exec From 38f4528609d715f665bbdcae15b80a9e2487ecca Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 18:54:36 +0300 Subject: [PATCH 7/8] update amo repo 2 methods --- repository/amo/amo.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repository/amo/amo.go b/repository/amo/amo.go index 39fee52..e87cbb1 100644 --- a/repository/amo/amo.go +++ b/repository/amo/amo.go @@ -807,7 +807,7 @@ func (r *AmoRepository) ChangeQuizSettings(ctx context.Context, request *model.R if err != nil { return err } - err = r.queries.ChangeQuizSettings(ctx, sqlcgen.ChangeQuizSettingsParams{ + _, err = r.queries.ChangeQuizSettings(ctx, sqlcgen.ChangeQuizSettingsParams{ Performerid: request.PerformerID, Pipelineid: request.PipelineID, Stepid: request.StepID, @@ -829,7 +829,7 @@ func (r *AmoRepository) SetQuizSettings(ctx context.Context, request *model.Rule if err != nil { return err } - err = r.queries.SetQuizSettings(ctx, sqlcgen.SetQuizSettingsParams{ + _, err = r.queries.SetQuizSettings(ctx, sqlcgen.SetQuizSettingsParams{ Performerid: request.PerformerID, Pipelineid: request.PipelineID, Stepid: request.StepID, From 8b2c886b3c40f4855a86164c8d57a252e34d57f2 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 4 Jun 2024 22:41:41 +0300 Subject: [PATCH 8/8] add new migrate files for fix index --- dal/schema/000012_init.down.sql | 4 ++++ dal/schema/000012_init.up.sql | 4 ++++ sqlc.yaml | 2 ++ 3 files changed, 10 insertions(+) create mode 100644 dal/schema/000012_init.down.sql create mode 100644 dal/schema/000012_init.up.sql diff --git a/dal/schema/000012_init.down.sql b/dal/schema/000012_init.down.sql new file mode 100644 index 0000000..0f34183 --- /dev/null +++ b/dal/schema/000012_init.down.sql @@ -0,0 +1,4 @@ +DROP INDEX IF EXISTS idx_unique_users; +DROP INDEX IF EXISTS idx_unique_rules; +CREATE UNIQUE INDEX idx_unique_users ON users (amoID); +CREATE UNIQUE INDEX idx_unique_rules ON rules (accountID, QuizID); \ No newline at end of file diff --git a/dal/schema/000012_init.up.sql b/dal/schema/000012_init.up.sql new file mode 100644 index 0000000..87913a8 --- /dev/null +++ b/dal/schema/000012_init.up.sql @@ -0,0 +1,4 @@ +DROP INDEX IF EXISTS idx_unique_users; +DROP INDEX IF EXISTS idx_unique_rules; +CREATE UNIQUE INDEX idx_unique_users ON users (amoID) WHERE Deleted = false; +CREATE UNIQUE INDEX idx_unique_rules ON rules (accountID, QuizID) WHERE Deleted = false; \ No newline at end of file diff --git a/sqlc.yaml b/sqlc.yaml index a2ed050..665bef1 100644 --- a/sqlc.yaml +++ b/sqlc.yaml @@ -26,6 +26,8 @@ packages: - "./dal/schema/000010_init.down.sql" - "./dal/schema/000011_init.up.sql" - "./dal/schema/000011_init.down.sql" + - "./dal/schema/000012_init.up.sql" + - "./dal/schema/000012_init.down.sql" engine: "postgresql" emit_json_tags: true emit_db_tags: true