diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index b8487e4..815e7c9 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -713,12 +713,12 @@ 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; +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; @@ -926,15 +926,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; + $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 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/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/dal/sqlcgen/queries.sql.go b/dal/sqlcgen/queries.sql.go index 0ff9814..565ef4a 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 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 ` 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 @@ -1454,7 +1457,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) { @@ -3297,10 +3300,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 + $4 AS StepID,$5 AS FieldsRule FROM users u WHERE u.AccountID = $6 AND u.Deleted = false + RETURNING id ` type SetQuizSettingsParams struct { @@ -3312,8 +3316,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, @@ -3321,7 +3325,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 @@ -3354,9 +3360,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 { 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, 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