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

150 lines
6.8 KiB
SQL
Raw 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 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;