diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index 215c2e6..e4aaca3 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -785,7 +785,14 @@ WITH user_data AS ( ON CONFLICT (amoID, accountID, Entity) DO NOTHING RETURNING * ) -SELECT * FROM inserted_tags; +SELECT nt.* +FROM new_tags nt +WHERE NOT EXISTS ( + SELECT * + FROM inserted_tags ins + JOIN user_data ud ON true + WHERE ins.amoID = nt.amoID AND ins.accountID = ud.amoid AND ins.Entity = nt.Entity +); -- name: CheckPipelines :many WITH new_pipelines AS ( @@ -806,7 +813,13 @@ WITH new_pipelines AS ( ON CONFLICT (amoID, accountID) DO NOTHING RETURNING * ) -SELECT * FROM inserted_pipelines; +SELECT np.* +FROM new_pipelines np +WHERE NOT EXISTS ( + SELECT * + FROM inserted_pipelines ins + WHERE ins.amoID = np.amoID AND ins.accountID = np.accountID +); -- name: CheckFields :many WITH user_data AS ( @@ -835,7 +848,14 @@ WITH user_data AS ( ON CONFLICT (amoID, accountID, entity) DO NOTHING RETURNING * ) -SELECT * from inserted_fields; +SELECT nf.* +FROM new_fields nf +WHERE NOT EXISTS ( + SELECT * + FROM inserted_fields ins + JOIN user_data ud ON true + WHERE ins.amoID = nf.amoID AND ins.accountID = ud.amoid AND ins.Entity = nf.Entity +); -- name: CheckSteps :many WITH new_steps AS ( @@ -858,7 +878,13 @@ WITH new_steps AS ( ON CONFLICT (amoID, accountID, PipelineID) DO NOTHING RETURNING * ) -SELECT * FROM inserted_steps; +SELECT ns.* +FROM new_steps ns +WHERE NOT EXISTS ( + SELECT * + FROM inserted_steps ins + WHERE ins.amoID = ns.amoID AND ins.accountID = ns.accountID AND ins.pipelineID = ns.pipelineID +); -- name: CheckUsers :exec INSERT INTO users (AmoID, Name, Email, Role, "Group", AmoUserID) @@ -870,3 +896,36 @@ UPDATE users SET Name = $2, Email = $3, Role = $4, "Group" = $5, AmoUserID = $6 -- name: GetTokenById :one SELECT * FROM tokens WHERE accountID = $1; + +-- name: DeletingUTM :exec +UPDATE utms SET Deleted = true WHERE ID = ANY($1::int[]); + +-- name: GetUTMsWithPagination :many +SELECT ut.*, COUNT(*) OVER() as total_count +FROM utms ut JOIN (SELECT AmoID FROM users WHERE users.AccountID = $1) u ON ut.AccountID = u.AmoID +WHERE ut.Deleted = false +ORDER BY ut.ID OFFSET ($2 - 1) * $3 LIMIT $3; + +-- name: SaveUTMs :many +WITH user_data AS ( + SELECT AmoID + FROM users + WHERE users.AccountID = $1 +), new_UTMs AS ( + SELECT (utm->>'AmoFieldID')::INT AS amoFieldID, + COALESCE(utm->>'QuizID', '')::INT AS quizID, + COALESCE(utm->>'Name', '')::varchar(50) AS name, + CURRENT_TIMESTAMP AS createdAt + FROM json_array_elements($2::json) AS utm +), inserted_utms AS( + INSERT INTO utms (AmoFieldID, QuizID, AccountID, Name, createdAt) + SELECT nu.amoFieldID, + nu.quizID, + ud.AmoID, + nu.name, + nu.createdAt + FROM new_UTMs nu + JOIN user_data ud ON true + RETURNING * +) +SELECT * from inserted_utms; \ No newline at end of file diff --git a/model/amo.go b/model/amo.go index 858b1c7..caaad3e 100644 --- a/model/amo.go +++ b/model/amo.go @@ -164,7 +164,7 @@ type FieldRule struct { type UTM struct { /* - айдишник в нашей системе Primary Key*/ - ID int `json:"ID" bson:"ID"` + ID int `json:"ID"` /* - айдишник кастомного поля в амо*/ Amofieldid int `json:"AmoFieldID"` /* - айдишник квиза*/ diff --git a/repository/amo/amo.go b/repository/amo/amo.go index 7a7b3a9..8c53c8c 100644 --- a/repository/amo/amo.go +++ b/repository/amo/amo.go @@ -615,11 +615,11 @@ func (r *AmoRepository) GettingQuizRules(ctx context.Context) (*model.Rule, erro // методы UTMs -func (r *AmoRepository) DeletingUserUtm(ctx context.Context, request *model.ListDeleteUTMIDsReq, accountId string) error { +func (r *AmoRepository) DeletingUserUtm(ctx context.Context, request *model.ListDeleteUTMIDsReq) error { return nil } -func (r *AmoRepository) SavingUserUtm(ctx context.Context, request *model.SaveUserListUTMReq, accountID string, quizID int) (*model.ListSavedIDUTMResp, error) { +func (r *AmoRepository) SavingUserUtm(ctx context.Context, request *model.SaveUserListUTMReq, accountID string) (*model.ListSavedIDUTMResp, error) { return nil, nil }