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 question ADD COLUMN utm jsonb NOT NULL DEFAULT '{}'; ALTER TABLE question ADD COLUMN rules jsonb NOT NULL DEFAULT '{}';