separate queries
This commit is contained in:
parent
0bb1040195
commit
460f903f3e
@ -701,70 +701,112 @@ WITH user_data AS (
|
||||
SELECT AmoID
|
||||
FROM users
|
||||
WHERE users.AccountID = $1
|
||||
)
|
||||
),
|
||||
insert AS (
|
||||
INSERT INTO tags (amoID, accountID, Entity, name, color, createdAt)
|
||||
SELECT (new_tags->>'AmoID')::INT,
|
||||
user_data.AmoID,
|
||||
CAST(new_tags->>'Entity' AS entitytype),
|
||||
COALESCE(new_tags->>'Name', '')::varchar(50),
|
||||
COALESCE(new_tags->>'Color', '')::varchar(50),
|
||||
CURRENT_TIMESTAMP
|
||||
FROM json_array_elements($2::json) AS new_tags
|
||||
JOIN user_data ON true
|
||||
ON CONFLICT (amoID, accountID, entity) DO UPDATE
|
||||
SET name = CASE WHEN tags.name <> EXCLUDED.name THEN EXCLUDED.name ELSE tags.name END,
|
||||
color = CASE WHEN tags.color <> EXCLUDED.color THEN EXCLUDED.color ELSE tags.color END,
|
||||
createdAt = CASE WHEN tags.createdAt <> CURRENT_TIMESTAMP THEN CURRENT_TIMESTAMP ELSE tags.createdAt END
|
||||
RETURNING *;
|
||||
SELECT (new_tags->>'AmoID')::INT,
|
||||
user_data.AmoID,
|
||||
CAST(new_tags->>'Entity' AS entitytype),
|
||||
COALESCE(new_tags->>'Name', '')::varchar(50),
|
||||
COALESCE(new_tags->>'Color', '')::varchar(50),
|
||||
CURRENT_TIMESTAMP
|
||||
FROM json_array_elements($2::json) AS new_tags
|
||||
JOIN user_data ON true
|
||||
ON CONFLICT (amoID, accountID, entity) DO NOTHING
|
||||
RETURNING EXCLUDED.*
|
||||
)
|
||||
SELECT * FROM insert;
|
||||
|
||||
-- name: UpdateTags :json_array
|
||||
UPDATE tags AS t
|
||||
SET name = (update_data ->> 'Name')::varchar(50),
|
||||
color = (update_data ->> 'Color')::varchar(50),
|
||||
createdAt = CURRENT_TIMESTAMP
|
||||
FROM json_array_elements($1::json) AS update_data
|
||||
WHERE t.amoID = (update_data ->> 'AmoID')::INT
|
||||
AND t.accountID = (update_data ->> 'AccountID')::INT
|
||||
AND t.Entity = (update_data ->> 'Entity')::entitytype;
|
||||
|
||||
|
||||
-- name: CheckPipelines :many
|
||||
WITH insert 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 UPDATE
|
||||
SET name = CASE WHEN pipelines.name <> EXCLUDED.name THEN EXCLUDED.name ELSE pipelines.name END,
|
||||
isArchive = CASE WHEN pipelines.isArchive <> EXCLUDED.isArchive THEN EXCLUDED.isArchive ELSE pipelines.isArchive END,
|
||||
createdAt = CASE WHEN pipelines.createdAt <> CURRENT_TIMESTAMP THEN CURRENT_TIMESTAMP ELSE pipelines.createdAt END
|
||||
RETURNING *;
|
||||
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 insert;
|
||||
|
||||
-- name: UpdatePipelines :exec
|
||||
UPDATE pipelines AS p
|
||||
SET name = (update_data ->> 'Name')::varchar(50),
|
||||
isArchive = CASE WHEN (update_data ->> 'IsArchive') = 'true' THEN TRUE ELSE FALSE END,
|
||||
createdAt = CURRENT_TIMESTAMP
|
||||
FROM json_array_elements($1::json) AS update_data
|
||||
WHERE p.amoID = (update_data ->> 'AmoID')::INT
|
||||
AND p.accountID = (update_data ->> 'AccountID')::INT;
|
||||
|
||||
|
||||
-- name: CheckSteps :many
|
||||
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 UPDATE
|
||||
SET name = CASE WHEN steps.name <> EXCLUDED.name THEN EXCLUDED.name ELSE steps.name END,
|
||||
color = CASE WHEN steps.color <> EXCLUDED.color THEN EXCLUDED.color ELSE steps.color END,
|
||||
createdAt = CASE WHEN steps.createdAt <> CURRENT_TIMESTAMP THEN CURRENT_TIMESTAMP ELSE steps.createdAt END
|
||||
RETURNING *;
|
||||
WITH insert 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 insert;
|
||||
|
||||
-- name: UpdateSteps :exec
|
||||
UPDATE steps AS s
|
||||
SET name = (update_data ->> 'Name')::varchar(50),
|
||||
color = (update_data ->> 'Color')::varchar(50),
|
||||
createdAt = CURRENT_TIMESTAMP
|
||||
FROM json_array_elements($1::json) AS update_data
|
||||
WHERE s.amoID = (update_data ->> 'AmoID')::INT
|
||||
AND s.accountID = (update_data ->> 'AccountID')::INT
|
||||
AND s.pipelineID = (update_data ->> 'PipelineID')::INT;
|
||||
|
||||
|
||||
-- name: CheckFields :many
|
||||
WITH user_data AS (
|
||||
SELECT AmoID
|
||||
FROM users
|
||||
WHERE users.AccountID = $1
|
||||
),
|
||||
insert 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.*
|
||||
)
|
||||
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 UPDATE
|
||||
SET name = CASE WHEN fields.name <> EXCLUDED.name THEN EXCLUDED.name ELSE fields.name END,
|
||||
code = CASE WHEN fields.code <> EXCLUDED.code THEN EXCLUDED.code ELSE fields.code END,
|
||||
type = CASE WHEN fields.type <> EXCLUDED.type THEN EXCLUDED.type ELSE fields.type END,
|
||||
createdAt = CASE WHEN fields.createdAt <> CURRENT_TIMESTAMP THEN CURRENT_TIMESTAMP ELSE fields.createdAt END
|
||||
RETURNING *;
|
||||
SELECT * FROM insert;
|
||||
|
||||
-- name: UpdateFields :exec
|
||||
UPDATE fields AS f
|
||||
SET name = (update_data ->> 'Name')::varchar(50),
|
||||
code = (update_data ->> 'Code')::varchar(255),
|
||||
type = (update_data ->> 'Type')::varchar(50),
|
||||
createdAt = CURRENT_TIMESTAMP
|
||||
FROM json_array_elements($1::json) AS update_data
|
||||
WHERE f.amoID = (update_data ->> 'AmoID')::INT
|
||||
AND f.accountID = (update_data ->> 'AccountID')::INT
|
||||
AND f.Entity = (update_data ->> 'Entity')::entitytype;
|
||||
|
@ -1,7 +1,7 @@
|
||||
ALTER TABLE pipelines DROP CONSTRAINT IF EXISTS unique_pipeline;
|
||||
ALTER TABLE steps DROP CONSTRAINT IF EXISTS unique_step;
|
||||
ALTER TABLE fields DROP CONSTRAINT IF EXISTS unique_field;
|
||||
ALTER TABLE tags DROP CONSTRAINT IF EXISTS unique_tag;
|
||||
DROP INDEX IF EXISTS idx_unique_pipeline;
|
||||
DROP INDEX IF EXISTS idx_unique_step;
|
||||
DROP INDEX IF EXISTS idx_unique_field;
|
||||
DROP INDEX IF EXISTS idx_unique_tag;
|
||||
|
||||
ALTER TABLE question
|
||||
DROP COLUMN IF EXISTS utm,
|
||||
|
@ -78,7 +78,7 @@ ADD COLUMN utm jsonb NOT NULL DEFAULT '{}';
|
||||
ALTER TABLE quiz
|
||||
ADD COLUMN rules jsonb NOT NULL DEFAULT '{}';
|
||||
|
||||
ALTER TABLE pipelines ADD CONSTRAINT unique_pipeline UNIQUE (amoID, accountID);
|
||||
ALTER TABLE steps ADD CONSTRAINT unique_step UNIQUE (amoID, accountID, PipelineID);
|
||||
ALTER TABLE fields ADD CONSTRAINT unique_field UNIQUE (amoID, accountID, entity);
|
||||
ALTER TABLE tags ADD CONSTRAINT unique_tag UNIQUE (amoID, accountID, entity);
|
||||
CREATE UNIQUE INDEX idx_unique_pipeline ON pipelines (amoID, accountID);
|
||||
CREATE UNIQUE INDEX idx_unique_step ON steps (amoID, accountID, PipelineID);
|
||||
CREATE UNIQUE INDEX idx_unique_field ON fields (amoID, accountID, entity);
|
||||
CREATE UNIQUE INDEX idx_unique_tag ON tags (amoID, accountID, entity);
|
Loading…
Reference in New Issue
Block a user