150 lines
6.8 KiB
SQL
150 lines
6.8 KiB
SQL
CREATE TABLE IF NOT EXISTS BitrixTokens (
|
||
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 NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
DO $$
|
||
BEGIN
|
||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'FieldsType') THEN
|
||
CREATE TYPE FieldsType AS ENUM (
|
||
'CRM_LEAD',
|
||
'CRM_COMPANY',
|
||
'CRM_CONTACT',
|
||
'CRM_DEAL',
|
||
'CRM_INVOICE',
|
||
'CRM_SMART_INVOICE',
|
||
'CRM_QUOTE',
|
||
'CRM_REQUISITE'
|
||
);
|
||
END IF;
|
||
END $$;
|
||
|
||
DO $$
|
||
BEGIN
|
||
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'CustomFieldsType') THEN
|
||
CREATE TYPE CustomFieldsType AS ENUM (
|
||
'string',
|
||
'integer',
|
||
'double',
|
||
'boolean',
|
||
'datetime',
|
||
'enumeration',
|
||
'iblock_section',
|
||
'iblock_element',
|
||
'employee',
|
||
'crm_status',
|
||
'crm',
|
||
'address',
|
||
'money',
|
||
'url',
|
||
'file',
|
||
'crm_pena_tag'
|
||
);
|
||
END IF;
|
||
END $$;
|
||
|
||
|
||
CREATE TABLE IF NOT EXISTS BitrixFields (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
BitrixID VARCHAR(255) NOT NULL, -- Айдишник field в битриксе
|
||
AccountID VARCHAR(255) NOT NULL,-- ID портала битрикса
|
||
EntityID FieldsType NOT NULL,-- тип поля
|
||
FieldName VARCHAR(255) NOT NULL,-- имя поля
|
||
EditFromLabel VARCHAR(255) NOT NULL,-- заголовок вопроса
|
||
FieldType CustomFieldsType NOT NULL, -- тип поля
|
||
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS BitrixAccountUsers (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
||
BitrixIDUserID VARCHAR(255) NOT NULL, -- ID пользователя в битриксе
|
||
Name VARCHAR(255) NOT NULL default '', -- Имя
|
||
LastName VARCHAR(255) NOT NULL default '',-- Фамилия
|
||
SecondName VARCHAR(255) NOT NULL default '', -- Отчество
|
||
Title VARCHAR(255) NOT NULL default '',
|
||
Email VARCHAR(255) NOT NULL default '', -- Почта
|
||
UFDepartment INT[], -- Массив департаментов
|
||
WorkPosition VARCHAR(255) NOT NULL default '', -- Должность
|
||
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS BitrixAccounts (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
AccountID VARCHAR(30) NOT NULL, -- ID аккаунта у нас
|
||
BitrixID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
||
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
Subdomain VARCHAR(50) NOT NULL -- поддомен
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS PipelineBitrix (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
BitrixID INT NOT NULL, -- Айдишник воронки в битриксе
|
||
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
||
Name VARCHAR(255) NOT NULL, -- Название воронки
|
||
EntityTypeId INT NOT NULL, -- Тип по номерам
|
||
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
CONSTRAINT validEntityType CHECK (EntityTypeId IN (1, 2, 3, 4, 5, 7, 8, 31))
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS StepBitrix (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
||
BitrixID VARCHAR(255) NOT NULL, -- Айдишник состояния в битриксе
|
||
EntityID VARCHAR(255) NOT NULL, -- Тип сущности
|
||
StatusID VARCHAR(255) NOT NULL, -- Текстовый формат ID статуса
|
||
Name VARCHAR(255) NOT NULL default '', -- Название
|
||
NameInit VARCHAR(255) NOT NULL default '', -- возможно это изначальное название
|
||
Color VARCHAR(50) NOT NULL default '', -- Цвет
|
||
PipelineID INT NOT NULL, -- ID воронки
|
||
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS BitrixRule (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
||
QuizID INT NOT NULL, -- ID квиза на которое вешается правило
|
||
PerformerID VARCHAR(255) NOT NULL, -- ID пользователя в битриксе который ответсвенный
|
||
PipelineID INT NOT NULL, -- ID воронки
|
||
TypeID VARCHAR(255) NOT NULL, -- шаг сделки только с "ENTITY_ID":"DEAL_TYPE","STATUS_ID":"SALE"
|
||
StageID VARCHAR(255) NOT NULL, -- стадия сделки, шаг "ENTITY_ID":"DEAL_STAGE","STATUS_ID":"NEW"
|
||
SourceID VARCHAR(255) NOT NULL, -- тип источника, шаг "ENTITY_ID":"SOURCE","STATUS_ID":"CALL"
|
||
StatusID VARCHAR(255) NOT NULL, -- тип источника, шаг "ENTITY_ID":"STATUS","STATUS_ID":"IN_PROCESS"
|
||
FieldsRule JSONB NOT NULL DEFAULT '{}', -- вложенная структура
|
||
TagsToAdd JSONB NOT NULL DEFAULT '{}', -- структура тегов которые надо дбавлять
|
||
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
||
LeadFlag BOOLEAN NOT NULL DEFAULT FALSE -- если true то делаем лид а не сделку
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS bitrixCRMStatuses (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
AccountID VARCHAR(255) 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 NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS bitrixContact (
|
||
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
||
AccountID VARCHAR(255) NOT NULL, -- ID "компании" в амо
|
||
BitrixID INT NOT NULL, -- ID контакта в амо
|
||
Field text NOT NULL DEFAULT '' -- значение чего то email? phone? etc
|
||
);
|
||
|
||
CREATE UNIQUE INDEX idx_unique_pipeline_bitrix ON PipelineBitrix (BitrixID, AccountID) WHERE Deleted = false;
|
||
CREATE UNIQUE INDEX idx_unique_step_bitrix ON StepBitrix (BitrixID, AccountID) WHERE Deleted = false;
|
||
CREATE UNIQUE INDEX idx_unique_field_bitrix ON BitrixFields (BitrixID, AccountID, EntityID);
|
||
ALTER TABLE answer ADD COLUMN version integer NOT NULL default 0;
|