diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index 7c543d9..fc2c118 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -733,8 +733,7 @@ ORDER BY f.ID OFFSET ($2 - 1) * $3 LIMIT $3; -- name: UpdateTags :exec UPDATE tags AS t SET name = (update_data ->> 'Name')::varchar(512), - color = (update_data ->> 'Color')::varchar(50), - createdAt = CURRENT_TIMESTAMP + color = (update_data ->> 'Color')::varchar(50) FROM json_array_elements($1::json) AS update_data WHERE t.amoID = (update_data ->> 'AmoID')::INT AND t.accountID = (update_data ->> 'AccountID')::INT @@ -743,8 +742,7 @@ WHERE t.amoID = (update_data ->> 'AmoID')::INT -- name: UpdatePipelines :exec UPDATE pipelines AS p SET name = (update_data ->> 'Name')::varchar(512), - isArchive = CASE WHEN (update_data ->> 'IsArchive') = 'true' THEN TRUE ELSE FALSE END, - createdAt = CURRENT_TIMESTAMP + isArchive = CASE WHEN (update_data ->> 'IsArchive') = 'true' THEN TRUE ELSE FALSE END FROM json_array_elements($1::json) AS update_data WHERE p.amoID = (update_data ->> 'AmoID')::INT AND p.accountID = (update_data ->> 'AccountID')::INT; @@ -752,8 +750,7 @@ WHERE p.amoID = (update_data ->> 'AmoID')::INT -- name: UpdateSteps :exec UPDATE steps AS s SET name = (update_data ->> 'Name')::varchar(512), - color = (update_data ->> 'Color')::varchar(50), - createdAt = CURRENT_TIMESTAMP + color = (update_data ->> 'Color')::varchar(50) FROM json_array_elements($1::json) AS update_data WHERE s.amoID = (update_data ->> 'AmoID')::INT AND s.accountID = (update_data ->> 'AccountID')::INT @@ -763,8 +760,7 @@ WHERE s.amoID = (update_data ->> 'AmoID')::INT UPDATE fields AS f SET name = (update_data ->> 'Name')::varchar(512), code = (update_data ->> 'Code')::varchar(255), - type = (update_data ->> 'Type')::fieldtype, - createdAt = CURRENT_TIMESTAMP + type = (update_data ->> 'Type')::fieldtype FROM json_array_elements($1::json) AS update_data WHERE f.amoID = (update_data ->> 'AmoID')::INT AND f.accountID = (update_data ->> 'AccountID')::INT @@ -897,14 +893,6 @@ WHERE NOT EXISTS ( 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) -VALUES ($1, $2, $3, $4, $5, $6) -ON CONFLICT (AmoID) DO NOTHING; - --- name: UpdateUsers :exec -UPDATE users SET Name = $2, Email = $3, Role = $4, "Group" = $5, AmoUserID = $6 WHERE AmoID = $1; - -- name: GetTokenById :one SELECT * FROM tokens WHERE accountID = $1; @@ -982,3 +970,44 @@ SELECT * FROM question WHERE id = ANY($1::int[]) AND deleted = FALSE; -- name: UpdateFieldRules :exec UPDATE rules SET FieldsRule = $1 WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $2) AND QuizID = $3 AND Deleted = false; + +-- name: UpdateUsers :exec +UPDATE users AS u +SET Name = (update_data ->> 'Name')::varchar(512), + Email = (update_data ->> 'Email')::varchar(50), + Role = (update_data ->> 'Role')::INT, + "Group" = (update_data ->> 'Group')::INT, + AmoUserID= (update_data ->> 'AmoUserID')::INT +FROM json_array_elements($1::json) AS update_data +WHERE u.AmoID = (update_data ->> 'AmocrmID')::INT; + +-- name: CheckUsers :many +WITH new_users AS ( + SELECT (u->>'AmocrmID')::INT AS AmoID, + (u->>'Name')::VARCHAR(512) AS Name, + (u->>'Group')::INT AS "Group", + (u->>'Role')::INT AS Role, + (u->>'Email')::VARCHAR(50) AS Email, + (u->>'AmoUserID')::INT AS AmoUserID, + CURRENT_TIMESTAMP AS createdAt + FROM json_array_elements($1::json) AS u +), inserted_users AS ( + INSERT INTO users (AmoID, Name, "Group", Role, Email, AmoUserID,createdAt) + SELECT nu.AmoID, + nu.Name, + nu."Group", + nu.Role, + nu.Email, + nu.AmoUserID, + nu.createdAt + FROM new_users nu + ON CONFLICT (amoID) DO NOTHING + RETURNING * +) +SELECT nu.* +FROM new_users nu +WHERE NOT EXISTS ( + SELECT * + FROM inserted_users ins + WHERE ins.amoID = nu.amoID +); \ No newline at end of file