This commit is contained in:
Pavel 2024-04-18 13:10:59 +03:00
parent ae01145ce6
commit 42ba11f5a0
3 changed files with 33 additions and 32 deletions

@ -700,30 +700,21 @@ SELECT *, COUNT(*) OVER() as total_count FROM fields WHERE Deleted = false ORDE
WITH user_data AS (
SELECT AmoID
FROM users
WHERE AccountID = $1 -- параметр AccountID из токена для получения id аккаунта в амо
), updated_tags AS (
UPDATE tags
SET name = new_tags.name, color = new_tags.color, createdAt = CURRENT_TIMESTAMP
FROM (
SELECT t.ID, t.Name, t.Color, t.AmoID
FROM UNNEST($3::entitytype[], $4::varchar(50)[], $5::varchar(50)[]) AS t(ID INT, Name VARCHAR(50), Color VARCHAR(50), AmoID INT)
) AS new_tags
JOIN user_data ON tags.AccountID = user_data.AmoID
WHERE tags.amoID = $2
AND tags.amoID = new_tags.amoID
AND tags.accountID = user_data.AmoID -- Используем полученный AmoID из таблицы users
AND tags.entity = $3
AND tags.deleted = FALSE
RETURNING tags.id, tags.amoID
), inserted_tags AS (
INSERT INTO tags (amoID, accountID, entity, name, color, createdAt)
SELECT $2, user_data.AmoID, $3, t.Name, t.Color, CURRENT_TIMESTAMP
FROM UNNEST($3::entitytype[], $4::varchar(50)[], $5::varchar(50)[]) AS t(Name VARCHAR(50), Color VARCHAR(50))
JOIN user_data ON $1 = user_data.AmoID
WHERE (t.Name, t.Color) NOT IN (SELECT name, color FROM updated_tags)
RETURNING id, amoID
WHERE AccountID = $1
)
SELECT * FROM updated_tags
UNION ALL
SELECT * FROM inserted_tags;
INSERT INTO tags (amoID, accountID, Entity, name, color, createdAt)
SELECT (new_tags->>'Amoid')::INT,
user_data.AmoID,
CAST(new_tags->>'Entity' AS entitytype),
new_tags->>'Name',
new_tags->>'Color',
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 = EXCLUDED.name,
color = EXCLUDED.color,
createdAt = CURRENT_TIMESTAMP
RETURNING *;

@ -1,3 +1,8 @@
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;
ALTER TABLE question
DROP COLUMN IF EXISTS utm,
DROP COLUMN IF EXISTS rules;

@ -15,7 +15,7 @@ CREATE TABLE IF NOT EXISTS users (
Email VARCHAR(50) NOT NULL DEFAULT '', -- почта в амо
Role VARCHAR(50) NOT NULL DEFAULT '', -- роль в амо
"Group" JSONB, -- вложенная структура так как в амо группы хранятся массивом структур
Deleted BOOLEAN,
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Subdomain VARCHAR(50) NOT NULL DEFAULT '',
AmoUserID INT NOT NULL , -- id пользователя который подключал интеграцию
@ -27,8 +27,8 @@ CREATE TABLE IF NOT EXISTS pipelines (
AmoID INT NOT NULL , --id воронки в амо
AccountID INT NOT NULL , --id аккаунта в амо связь с таблицей users AmoID неявная посредством join
Name VARCHAR(50) NOT NULL DEFAULT '', --название воронки в амо
IsArchive BOOLEAN, --флаг архивной воронки в амо
Deleted BOOLEAN,
IsArchive BOOLEAN NOT NULL DEFAULT FALSE, --флаг архивной воронки в амо
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS steps (
AccountID INT NOT NULL, --id аккаунта в амо связь с таблицей users AmoID неявная посредством join
Name VARCHAR(50) NOT NULL DEFAULT '', --название воронки в амо
Color VARCHAR(50) NOT NULL DEFAULT '', --цвет шага в амо*
Deleted BOOLEAN,
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
@ -58,7 +58,7 @@ CREATE TABLE IF NOT EXISTS fields (
Name VARCHAR(50) NOT NULL DEFAULT '', -- название воронки в амо
Entity EntityType NOT NULL, -- тип сущности в амо, для которой это кастомное поле
Type VARCHAR(50) NOT NULL DEFAULT '', -- тип поля
Deleted BOOLEAN,
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
@ -69,11 +69,16 @@ CREATE TABLE IF NOT EXISTS tags (
Entity EntityType NOT NULL, -- сущность, к которой принадлежит этот тег
Name VARCHAR(50) NOT NULL DEFAULT '', -- название тега в амо
Color VARCHAR(50) NOT NULL DEFAULT '', -- цвет тега в амо
Deleted BOOLEAN,
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ALTER TABLE quiz
ADD COLUMN utm jsonb NOT NULL DEFAULT '{}';
ALTER TABLE quiz
ADD COLUMN rules jsonb NOT NULL DEFAULT '{}';
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);