init field type enum

This commit is contained in:
Pavel 2024-04-28 16:03:05 +03:00
parent 8f7c74046b
commit 6d80f5c5e8
4 changed files with 49 additions and 7 deletions

@ -761,7 +761,7 @@ WHERE s.amoID = (update_data ->> 'AmoID')::INT
UPDATE fields AS f
SET name = (update_data ->> 'Name')::varchar(50),
code = (update_data ->> 'Code')::varchar(255),
type = (update_data ->> 'Type')::varchar(50),
type = (update_data ->> 'Type')::fieldtype,
createdAt = CURRENT_TIMESTAMP
FROM json_array_elements($1::json) AS update_data
WHERE f.amoID = (update_data ->> 'AmoID')::INT
@ -839,7 +839,7 @@ WITH user_data AS (
COALESCE(field->>'Code', '')::varchar(255) AS code,
COALESCE(field->>'Name', '')::varchar(50) AS name,
CAST(field->>'Entity' AS entitytype) AS Entity,
COALESCE(field->>'Type', '')::varchar(50) AS type,
COALESCE(field->>'Type', '')::fieldtype AS type,
CURRENT_TIMESTAMP AS createdAt
FROM json_array_elements($2::json) AS field
), inserted_fields AS(

@ -13,8 +13,15 @@ DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_type WHERE typname = 'entitytype') THEN
DROP TYPE EntityType;
END IF;
END $$;
END IF;
END $$;
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_type WHERE typname = 'fieldtype') THEN
DROP TYPE FieldType;
END IF;
END $$;
DROP TABLE IF EXISTS steps;
DROP TABLE IF EXISTS pipelines;

@ -42,7 +42,6 @@ CREATE TABLE IF NOT EXISTS steps (
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'entitytype') THEN
@ -50,6 +49,13 @@ DO $$
END IF;
END $$;
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'fieldtype') THEN
CREATE TYPE FieldType AS ENUM ('text', 'numeric', 'checkbox', 'select', 'multiselect', 'date', 'url', 'textarea', 'radiobutton', 'streetaddress', 'smart_address', 'birthday', 'legal_entity', 'date_time', 'price', 'category', 'items', 'tracking_data', 'linked_entity', 'chained_list', 'monetary', 'file', 'payer', 'supplier');
END IF;
END $$;
CREATE TABLE IF NOT EXISTS fields (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AmoID INT NOT NULL, -- айдишник кастомного поля в амо
@ -57,7 +63,7 @@ CREATE TABLE IF NOT EXISTS fields (
AccountID INT NOT NULL, -- id аккаунта в амо связь с таблицей users AmoID неявная посредством join
Name VARCHAR(50) NOT NULL DEFAULT '', -- название воронки в амо
Entity EntityType NOT NULL, -- тип сущности в амо, для которой это кастомное поле
Type VARCHAR(50) NOT NULL DEFAULT '', -- тип поля
Type FieldType NOT NULL DEFAULT '', -- тип поля
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

@ -111,7 +111,7 @@ type Field struct {
/* - тип сущности в амо, для которой это кастомное поле*/
Entity EntityType `json:"Entity"`
/* - тип поля https://www.amocrm.ru/developers/content/crm_platform/custom-fields#%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BD%D1%8B%D0%B5-%D1%82%D0%B8%D0%BF%D1%8B-%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9*/
Type string `json:"Type"`
Type FieldType `json:"Type"`
/* - флаг мягкого удаления*/
Deleted bool `json:"Deleted"`
/* - таймштамп создания воронки в нашей системе*/
@ -178,3 +178,32 @@ type UTM struct {
/* - таймштамп создания тега в нашей системе*/
Createdat int64 `json:"CreatedAt"`
}
type FieldType string
const (
TypeAmoText FieldType = "text" //Текст
TypeAmoNumeric FieldType = "numeric" //Число
TypeAmoCheckbox FieldType = "checkbox" //Флаг
TypeAmoSelect FieldType = "select" //Список
TypeAmoMultiselect FieldType = "multiselect" //Мультисписок
TypeAmoDate FieldType = "date" //Дата
TypeAmoUrl FieldType = "url" // Ссылка
TypeAmoTextarea FieldType = "textarea" // Текстовая область
TypeAmoRadiobutton FieldType = "radiobutton" // Переключатель
TypeAmoStreetAddress FieldType = "streetaddress" // Короткий адрес
TypeAmoSmartAddress FieldType = "smart_address" // Адрес
TypeAmoBirthday FieldType = "birthday" // День рождения
TypeAmoLegalEntity FieldType = "legal_entity" // Юр. лицо
TypeAmoDateTime FieldType = "date_time" // Дата и время
TypeAmoPrice FieldType = "price" //Цена
TypeAmoCategory FieldType = "category" // Категория
TypeAmoItems FieldType = "items" // Предметы
TypeAmoTrackingData FieldType = "tracking_data" // Отслеживаемые данные
TypeAmoLinkedEntity FieldType = "linked_entity" // Связь с другим элементом
TypeAmoChainedList FieldType = "chained_list" // Каталоги и списки (платная опция Супер-поля)
TypeAmoMonetary FieldType = "monetary" // Денежное (платная опция Супер-поля)
TypeAmoFile FieldType = "file" // Файл
TypeAmoPayer FieldType = "payer" // Плательщик (только в списке Счета-покупки)
TypeAmoSupplier FieldType = "supplier" // Поставщик (только в списке Счета-покупки)
)