rework query

This commit is contained in:
Pavel 2024-04-19 10:59:51 +03:00
parent 3960a1a5d5
commit 92cf86e26b

@ -762,54 +762,76 @@ WITH user_data AS (
)
SELECT * FROM inserted_tags;
-- name: CheckPipelines :many
WITH new_pipelines AS (
SELECT (pipeline->>'AmoID')::INT,
(pipeline->>'AccountID')::INT,
COALESCE(pipeline->>'Name', '')::varchar(50),
CASE WHEN (pipeline->>'IsArchive') = 'true' THEN TRUE ELSE FALSE END,
CURRENT_TIMESTAMP
FROM json_array_elements($1::json) AS pipeline
), inserted_pipelines AS(
INSERT INTO pipelines (amoID, accountID, name, isArchive, createdAt)
SELECT np.amoID,
np.accountID,
np.name,
np.isArchive,
CURRENT_TIMESTAMP
FROM new_pipelines np
ON CONFLICT (amoID, accountID) DO NOTHING
RETURNING *
)
SELECT * FROM inserted_pipelines;
-- -- name: CheckPipelines :many
-- WITH insertt AS (
-- INSERT INTO pipelines (amoID, accountID, name, isArchive, createdAt)
-- SELECT (new_pipelines->>'AmoID')::INT,
-- (new_pipelines->>'AccountID')::INT,
-- COALESCE(new_pipelines->>'Name', '')::varchar(50),
-- CASE WHEN (new_pipelines->>'IsArchive') = 'true' THEN TRUE ELSE FALSE END,
-- CURRENT_TIMESTAMP
-- FROM json_array_elements($1::json) AS new_pipelines
-- ON CONFLICT (amoID, accountID) DO NOTHING
-- RETURNING EXCLUDED.*
-- )
-- SELECT * FROM insertt;
--
-- -- name: CheckFields :many
-- WITH user_data AS (
-- SELECT AmoID
-- FROM users
-- WHERE users.AccountID = $1
-- ),
-- insertt AS (
-- INSERT INTO fields (amoID, code, accountID, name, Entity, type, createdAt)
-- SELECT (new_fields->>'AmoID')::INT,
-- COALESCE(new_fields->>'Code', '')::varchar(255),
-- user_data.AmoID,
-- COALESCE(new_fields->>'Name', '')::varchar(50),
-- CAST(new_fields->>'Entity' AS entitytype),
-- COALESCE(new_fields->>'Type', '')::varchar(50),
-- CURRENT_TIMESTAMP
-- FROM json_array_elements($2::json) AS new_fields
-- JOIN user_data ON true
-- ON CONFLICT (amoID, accountID, entity) DO NOTHING
-- RETURNING EXCLUDED.*
-- )
-- SELECT * FROM insertt;
--
-- -- name: CheckSteps :many
-- WITH insertt AS (
-- INSERT INTO steps (amoID, pipelineID, accountID, name, color, createdAt)
-- SELECT (new_steps->>'AmoID')::INT,
-- (new_steps->>'PipelineID')::INT,
-- (new_steps->>'AccountID')::INT,
-- COALESCE(new_steps->>'Name', '')::varchar(50),
-- COALESCE(new_steps->>'Color', '')::varchar(50),
-- CURRENT_TIMESTAMP
-- FROM json_array_elements($1::json) AS new_steps
-- ON CONFLICT (amoID, accountID, PipelineID) DO NOTHING
-- RETURNING EXCLUDED.*
-- )
-- SELECT * FROM insertt;
-- name: CheckFields :many
WITH user_data AS (
SELECT AmoID
FROM users
WHERE users.AccountID = $1
), new_fields AS (
SELECT (field->>'AmoID')::INT,
COALESCE(field->>'Code', '')::varchar(255),
COALESCE(field->>'Name', '')::varchar(50),
CAST(field->>'Entity' AS entitytype),
COALESCE(field->>'Type', '')::varchar(50),
CURRENT_TIMESTAMP
FROM json_array_elements($2::json) AS field
), inserted_fields AS(
INSERT INTO fields (amoID, code, accountID, name, Entity, type, createdAt)
SELECT nf.amoID,
nf.code,
ud.AmoID,
nf.name,
nf.Entity,
nf.type,
CURRENT_TIMESTAMP
FROM new_fields nf
JOIN user_data ud ON true
ON CONFLICT (amoID, accountID, entity) DO NOTHING
RETURNING *
)
SELECT * from inserted_fields;
-- name: CheckSteps :many
WITH new_steps AS (
SELECT (step->>'AmoID')::INT,
(step->>'PipelineID')::INT,
(step->>'AccountID')::INT,
COALESCE(step->>'Name', '')::varchar(50),
COALESCE(step->>'Color', '')::varchar(50),
CURRENT_TIMESTAMP
FROM json_array_elements($1::json) AS step
), inserted_steps AS (
INSERT INTO steps (amoID, pipelineID, accountID, name, color, createdAt)
SELECT ns.amoID,
ns.pipelineID,
ns.accountID,
ns.name,
ns.color,
CURRENT_TIMESTAMP
FROM new_steps ns
ON CONFLICT (amoID, accountID, PipelineID) DO NOTHING
RETURNING *
)
SELECT * FROM inserted_steps;