diff --git a/dal/db_query/queries.sql b/dal/db_query/queries.sql index 61b5171..6f9bf10 100644 --- a/dal/db_query/queries.sql +++ b/dal/db_query/queries.sql @@ -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;