CREATE TABLE 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 '', -- страна в амо FOREIGN KEY (AccountID) REFERENCES tokens (AccountID), -- связь с таблицей tokens FOREIGN KEY (AmoID) REFERENCES pipelines (AccountID) -- связь с таблицей pipelines ); CREATE TABLE tokens ( AccountID VARCHAR(30) PRIMARY KEY, -- связь с users AccountID 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 pipelines ( ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY, AmoID INT NOT NULL , --id воронки в амо AccountID INT NOT NULL , --id аккаунта в амо связь с таблицей users AmoID Name VARCHAR(50) NOT NULL DEFAULT '', --название воронки в амо IsArchive BOOLEAN, --флаг архивной воронки в амо Deleted BOOLEAN, CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (AccountID) REFERENCES users (AmoID) -- связь с таблицей users ); CREATE TABLE steps ( ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY, AmoID INT NOT NULL, --id шага воронки в амо PipelineID INT NOT NULL, --id воронки AmoID pipelines AccountID INT NOT NULL, --id аккаунта в амо связь с таблицей users AmoID Name VARCHAR(50) NOT NULL DEFAULT '', --название воронки в амо Color VARCHAR(50) NOT NULL DEFAULT '', --цвет шага в амо* Deleted BOOLEAN, CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (AccountID) REFERENCES users (AmoID), FOREIGN KEY (PipelineID) REFERENCES pipelines (ID) ); CREATE TYPE EntityType AS ENUM ('leads', 'contacts', 'companies', 'customers'); CREATE TABLE 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 Name VARCHAR(50) NOT NULL DEFAULT '', -- название воронки в амо Entity EntityType NOT NULL, -- тип сущности в амо, для которой это кастомное поле Type VARCHAR(50) NOT NULL DEFAULT '', -- тип поля Deleted BOOLEAN, CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (AccountID) REFERENCES users (AmoID) ); CREATE TABLE tags ( ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY, AmoID INT NOT NULL, -- айдишник тега в амо AccountID INT NOT NULL, -- id аккаунта в амо связь с таблицей users AmoID Entity EntityType NOT NULL, -- сущность, к которой принадлежит этот тег Name VARCHAR(50) NOT NULL DEFAULT '', -- название тега в амо Color VARCHAR(50) NOT NULL DEFAULT '', -- цвет тега в амо Deleted BOOLEAN, CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP );