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

119 lines
6.6 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CREATE TABLE IF NOT EXISTS tokens (
AccountID VARCHAR(30) PRIMARY KEY, -- связь с users AccountID неявная посредством join
RefreshToken TEXT NOT NULL ,
AccessToken TEXT NOT NULL ,
AuthCode TEXT NOT NULL , -- код авторизации который получаем при вебхук
Expiration TIMESTAMP NOT NULL, -- время истечения токенов
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS users (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AccountID VARCHAR(30) NOT NULL DEFAULT '', -- id квизе из токена
AmoID INT NOT NULL , -- id в амо
Name VARCHAR(512) NOT NULL DEFAULT '', -- имя в амо
Email VARCHAR(50) NOT NULL DEFAULT '', -- почта в амо
Role INT NOT NULL DEFAULT 0, -- роль в амо
"Group" INT NOT NULL DEFAULT 0, -- вложенная структура так как в амо группы хранятся массивом структур
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Subdomain VARCHAR(50) NOT NULL DEFAULT '',
AmoUserID INT NOT NULL , -- id пользователя который подключал интеграцию
Country VARCHAR(50) NOT NULL DEFAULT '' -- страна в амо
);
CREATE TABLE IF NOT EXISTS pipelines (
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 '', --название воронки в амо
IsArchive BOOLEAN NOT NULL DEFAULT FALSE, --флаг архивной воронки в амо
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS steps (
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 '', --название воронки в амо
Color VARCHAR(50) NOT NULL DEFAULT '', --цвет шага в амо*
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
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 $$;
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'fieldtype') THEN
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');
END IF;
END $$;
CREATE TABLE IF NOT EXISTS fields (
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 '', -- название воронки в амо
Entity EntityType NOT NULL, -- тип сущности в амо, для которой это кастомное поле
Type FieldType NOT NULL, -- тип поля
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS tags (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoID INT NOT NULL, -- айдишник тега в амо
AccountID INT NOT NULL, -- id аккаунта в амо связь с таблицей users AmoID неявная посредством join
Entity EntityType NOT NULL, -- сущность, к которой принадлежит этот тег
Name VARCHAR(512) NOT NULL DEFAULT '', -- название тега в амо
Color VARCHAR(50) NOT NULL DEFAULT '', -- цвет тега в амо
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS utms (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoFieldID INT NOT NULL DEFAULT 0, -- id field в амо
QuizID INT NOT NULL, -- id опроса
AccountID INT NOT NULL, -- id аккаунта в амо AMOID
Name VARCHAR(512) NOT NULL DEFAULT '', -- название utm
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
);
CREATE UNIQUE INDEX idx_unique_users ON users (amoID);
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 аккаунта в амо
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
);