common/dal/schema/000010_init.up.sql

119 lines
6.6 KiB
MySQL
Raw Permalink Normal View History

2024-04-17 15:37:04 +00:00
CREATE TABLE IF NOT EXISTS tokens (
AccountID VARCHAR(30) PRIMARY KEY, -- связь с users AccountID неявная посредством join
2024-04-19 14:41:25 +00:00
RefreshToken TEXT NOT NULL ,
AccessToken TEXT NOT NULL ,
AuthCode TEXT NOT NULL , -- код авторизации который получаем при вебхук
2024-04-17 15:37:04 +00:00
Expiration TIMESTAMP NOT NULL, -- время истечения токенов
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2024-04-17 15:17:07 +00:00
CREATE TABLE IF NOT EXISTS users (
2024-04-17 14:48:38 +00:00
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
2024-04-20 08:59:16 +00:00
AccountID VARCHAR(30) NOT NULL DEFAULT '', -- id квизе из токена
2024-04-17 14:48:38 +00:00
AmoID INT NOT NULL , -- id в амо
Name VARCHAR(512) NOT NULL DEFAULT '', -- имя в амо
2024-04-17 14:48:38 +00:00
Email VARCHAR(50) NOT NULL DEFAULT '', -- почта в амо
2024-04-20 08:59:16 +00:00
Role INT NOT NULL DEFAULT 0, -- роль в амо
"Group" INT NOT NULL DEFAULT 0, -- вложенная структура так как в амо группы хранятся массивом структур
2024-04-18 10:10:59 +00:00
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
2024-04-17 14:48:38 +00:00
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Subdomain VARCHAR(50) NOT NULL DEFAULT '',
AmoUserID INT NOT NULL , -- id пользователя который подключал интеграцию
Country VARCHAR(50) NOT NULL DEFAULT '' -- страна в амо
2024-04-17 14:48:38 +00:00
);
2024-04-17 15:17:07 +00:00
CREATE TABLE IF NOT EXISTS pipelines (
2024-04-17 14:48:38 +00:00
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoID INT NOT NULL , --id воронки в амо
AccountID INT NOT NULL , --id аккаунта в амо связь с таблицей users AmoID неявная посредством join
Name VARCHAR(512) NOT NULL DEFAULT '', --название воронки в амо
2024-04-18 10:10:59 +00:00
IsArchive BOOLEAN NOT NULL DEFAULT FALSE, --флаг архивной воронки в амо
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
2024-04-17 14:48:38 +00:00
);
2024-04-17 15:17:07 +00:00
CREATE TABLE IF NOT EXISTS steps (
2024-04-17 14:48:38 +00:00
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoID INT NOT NULL, --id шага воронки в амо
PipelineID INT NOT NULL, --id воронки AmoID pipelines неявная посредством join
AccountID INT NOT NULL, --id аккаунта в амо связь с таблицей users AmoID неявная посредством join
Name VARCHAR(512) NOT NULL DEFAULT '', --название воронки в амо
2024-04-17 14:48:38 +00:00
Color VARCHAR(50) NOT NULL DEFAULT '', --цвет шага в амо*
2024-04-18 10:10:59 +00:00
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
2024-04-17 14:48:38 +00:00
);
2024-04-17 15:17:07 +00:00
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'entitytype') THEN
CREATE TYPE EntityType AS ENUM ('leads', 'contacts', 'companies', 'customers');
END IF;
END $$;
2024-04-17 14:48:38 +00:00
2024-04-28 13:03:05 +00:00
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'fieldtype') THEN
2024-04-29 09:36:30 +00:00
CREATE TYPE FieldType AS ENUM ('text', 'numeric', 'checkbox', 'select', 'multiselect', 'date', 'url', 'textarea', 'radiobutton', 'streetaddress', 'smart_address', 'birthday', 'legal_entity', 'date_time', 'price', 'category', 'items', 'tracking_data', 'linked_entity', 'chained_list', 'monetary', 'file', 'payer', 'supplier', 'multitext');
2024-04-28 13:03:05 +00:00
END IF;
END $$;
2024-04-17 15:17:07 +00:00
CREATE TABLE IF NOT EXISTS fields (
2024-04-17 14:48:38 +00:00
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoID INT NOT NULL, -- айдишник кастомного поля в амо
Code VARCHAR(255) NOT NULL DEFAULT '', -- кодовое слово в амо
AccountID INT NOT NULL, -- id аккаунта в амо связь с таблицей users AmoID неявная посредством join
Name VARCHAR(512) NOT NULL DEFAULT '', -- название воронки в амо
2024-04-17 14:48:38 +00:00
Entity EntityType NOT NULL, -- тип сущности в амо, для которой это кастомное поле
2024-04-29 09:32:12 +00:00
Type FieldType NOT NULL, -- тип поля
2024-04-18 10:10:59 +00:00
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
2024-04-17 14:48:38 +00:00
);
2024-04-17 15:17:07 +00:00
CREATE TABLE IF NOT EXISTS tags (
2024-04-17 14:48:38 +00:00
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoID INT NOT NULL, -- айдишник тега в амо
AccountID INT NOT NULL, -- id аккаунта в амо связь с таблицей users AmoID неявная посредством join
2024-04-17 14:48:38 +00:00
Entity EntityType NOT NULL, -- сущность, к которой принадлежит этот тег
Name VARCHAR(512) NOT NULL DEFAULT '', -- название тега в амо
2024-04-17 14:48:38 +00:00
Color VARCHAR(50) NOT NULL DEFAULT '', -- цвет тега в амо
2024-04-18 10:10:59 +00:00
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
2024-04-17 14:48:38 +00:00
);
2024-04-17 15:17:07 +00:00
2024-04-22 10:39:34 +00:00
CREATE TABLE IF NOT EXISTS utms (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoFieldID INT NOT NULL DEFAULT 0, -- id field в амо
2024-04-22 10:39:34 +00:00
QuizID INT NOT NULL, -- id опроса
AccountID INT NOT NULL, -- id аккаунта в амо AMOID
Name VARCHAR(512) NOT NULL DEFAULT '', -- название utm
2024-04-22 10:39:34 +00:00
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS rules (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AccountID INT NOT NULL, -- id аккаунта в амо AMOID
QuizID INT NOT NULL, -- id опроса
PerformerID INT NOT NULL, -- айдишник ответственного за сделку
PipelineID INT NOT NULL, --id воронки AmoID pipelines неявная посредством join
StepID INT NOT NULL , -- id этапа steps AmoID join
UTMS INTEGER[], -- список UTM для этого опроса id utm
FieldsRule JSONB NOT NULL DEFAULT '{}', -- вложенная структура
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2024-05-02 09:53:29 +00:00
CREATE UNIQUE INDEX idx_unique_users ON users (amoID);
2024-05-02 09:58:06 +00:00
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);
CREATE UNIQUE INDEX idx_unique_rules ON rules (accountID, QuizID);
CREATE TABLE IF NOT EXISTS amoCRMStatuses (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AccountID INT NOT NULL, -- id аккаунта в амо
2024-05-04 12:59:43 +00:00
DealID INT NOT NULL, -- id сделки в которую добавлялось
AnswerID BIGINT NOT NULL REFERENCES answer(id), -- id true result который вызвал действие
Status TEXT NOT NULL DEFAULT '', -- запись о ошибке, либо успехе
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);