79 lines
4.1 KiB
SQL
79 lines
4.1 KiB
SQL
CREATE TABLE IF NOT EXISTS tokens (
|
||
AccountID VARCHAR(30) PRIMARY KEY, -- связь с users AccountID неявная посредством join
|
||
RefreshToken VARCHAR(512) NOT NULL ,
|
||
AccessToken VARCHAR(512) NOT NULL ,
|
||
AuthCode VARCHAR(512) 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 , -- id квизе из токена
|
||
AmoID INT NOT NULL , -- id в амо
|
||
Name VARCHAR(50) NOT NULL DEFAULT '', -- имя в амо
|
||
Email VARCHAR(50) NOT NULL DEFAULT '', -- почта в амо
|
||
Role VARCHAR(50) NOT NULL DEFAULT '', -- роль в амо
|
||
"Group" JSONB, -- вложенная структура так как в амо группы хранятся массивом структур
|
||
Deleted BOOLEAN,
|
||
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(50) NOT NULL DEFAULT '', --название воронки в амо
|
||
IsArchive BOOLEAN, --флаг архивной воронки в амо
|
||
Deleted BOOLEAN,
|
||
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(50) NOT NULL DEFAULT '', --название воронки в амо
|
||
Color VARCHAR(50) NOT NULL DEFAULT '', --цвет шага в амо*
|
||
Deleted BOOLEAN,
|
||
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 $$;
|
||
|
||
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(50) NOT NULL DEFAULT '', -- название воронки в амо
|
||
Entity EntityType NOT NULL, -- тип сущности в амо, для которой это кастомное поле
|
||
Type VARCHAR(50) NOT NULL DEFAULT '', -- тип поля
|
||
Deleted BOOLEAN,
|
||
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(50) NOT NULL DEFAULT '', -- название тега в амо
|
||
Color VARCHAR(50) NOT NULL DEFAULT '', -- цвет тега в амо
|
||
Deleted BOOLEAN,
|
||
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 '{}'; |