⟵ сюдатуда ⟶
  • Установка
  • Установка на Ubuntu
  • Обновления
  • Установка PRO
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Системные таблицы
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • [PRO] Деревья
  • [PRO] Анонимные таблицы
  • [PRO] Внешние формы
  • [PRO] Экспорт и импорт таблиц
  • Полный перенос схем базы данных с сервера на сервер через бекапирование БД (доступно в MIT)
  • Создание дампа
  • Загрузка дампа
  • Перенос частей решений (только в PRO)
  • Зарезервированные name
  • Создание выгрузки
  • Загрузка через интерфейс
  • Тип выполняемого действия
  • Настройки соответствия данных внутри таблиц
  • Соответствие ролей, дерева и категорий таблиц
  • Matches для последующих загрузок
  • Коды при загрузке
  • Использование bin/totum для автоматического и массового обновления схем
  • Использование обновлений для создания связки test — prod
  • [PRO] MeiliSearch
  • [PRO] Базы данных
  • [PRO] Настройка CSS
  • [PRO] Custom docs
  • [PRO] LDAP AD
  • [PRO] Версии файлов
  • [PRO] List-unsubscribe
  • [PRO] Динамические поля
  • [PRO] Only Office
  • [PRO] Auth Tokens
  • [PRO] 2FA
  • [PRO] Superlang
  • [PRO] Profiler
  • [PRO] Подключение функций
  • [SRV] Подключение
  • [SRV] Пользовательские возможности
  • [SRV] XLSX/DOCX генераторы
  • [SRV] chatGPT
  • PRO Обновления и выгрузки

    Полный перенос схем базы данных с сервера на сервер через бекапирование БД (доступно в MIT)

    Конечным исполнителем всех операций являются pg_dump и psql. Если вы создали бэкап на одном сервере, а восстанавливаете на другом — убедитесь, что вы идете с повышением версии PostgreSQL командой psql -V. При понижении версии бэкап, скорее всего, развернут не будет.

    К частичному переносу таблиц внутренними средствами Тотум это не относится.

    Создание дампа

    bin/totum schema-backup prod_dump.sql
    
    # можно не переносить логи и автоматически сжимать в gz:
    
    bin/totum schema-backup --no-logs --gz prod_dump.sql
    
    # можно не переносить некоторые таблицы:
    
    bin/totum schema-backup --no-content="table_name_1,table_name_2" prod_dump.sql
    
    # если мы дампируем multy, то необходимо указать какую конкретную схему:
    
    bin/totum schema-backup --schema="shema_name" prod_dump.sql
    
    

    Загрузка дампа

    Чем больше дамп базы тем дольше будет выполняться загрузка. Прерывание операции любым способом — приведет к неработоспособности решения.

    Убедитесь, что с целевой базой никто не работает в момент загрузки!

    bin/totum schema-replace prod_dump.sql
    
    # при выполнении этой операции схема БД полностью заменяется на схему из prod_dump.sql
    
    # по умолчанию кроны при загрузке отключаются, можно это отменить
    
    bin/totum schema-replace --with-active-crons prod_dump.sql 
    
    # если восстанавливается существующая схема в multy:
    
    bin/totum schema-replace prod_dump.sql SCHEMA_NAME_FOR_REPLACE
    
    # если содается нвая схема в multy:
    
    bin/totum schema-replace prod_dump.sql SCHEMA_NAME HOST_FOR_SCHEMA
    
    

    Перенос частей решений (только в PRO)

    В Totum-PRO есть механизм позволяющий выгружать и загружать наборы таблиц с данными или без.

    Таким образом, вы можете переносить части решения из одной схемы в другую.

    Этот же механизм используется для обновления core-таблиц.

    Основная таблица для создания и загрузки находится Системные таблицыPROИмпорт/экспорт

    Импорт/экспорт

    Таблицы выгружаются и загружаются по name. Поэтому, если у вас в двух базах имеются разные таблицы имеющие одинаковый name – перенос не удастся, так как при загрузке таблица с совпадающим name будет перезаписана.

    Если вы хотите создать выгрузку для тиражного распространения, то при проектировании используйте свой префикс перед названиями таблиц из 3-4 букв и двух нижних подчеркиваний. Для новых системных таблиц мы используем ttm__.

    Зарезервированные name

    Тотум имеет ряд системных таблиц name которых не могут быть использованы для пользовательских таблиц:

    auth_log
    calc_fields_log
    calcstable_cycle_version
    calcstable_versions
    crons
    log_structure
    notification_codes
    notifications
    panels_view_settings
    print_templates
    roles
    settings
    table_categories
    tables
    tables_fields
    tree
    users
    ttm__... — и таблицы с префиксом ttm__
    

    Создание выгрузки

    Чтобы создать выгрузку нажмите СОЗДАТЬ ВЫГРУЗКУ — вам необходимо выбрать какие таблицы в нее попадут, какие настройки этих таблиц выгружаются и какие поля будут в них выгружены, а также настройки выгрузки данных.

    Также задайте Название выгрузки и если требуется Описание.

    Создание выгрузки

    На основании выбранных таблиц в выгрузку будут добавлены элементы Дерева, Роли и Категории таблиц.

    Когда вы нажимаете СОЗДАТЬ ВЫГРУЗКУ, в таблицу Системные таблицыИмпорт/экспортИмпорт/экспорт будет добавлена строка содержащая запакованный в gzip json с дополнительным расширением .ttm.

    Этот файл можно скачать и загрузить в другую схему.

    Загрузка через интерфейс

    Для загрузки закачайте файл выгрузки в поле Файл загрузки нажмите на ЗАГРУЗИТЬ ФАЙЛ. Загрузка в схему в этот момент не происходит — файл с данными будет распакован и откроется окно настроек загрузки.

    Настройки загрузки

    Будьте внимательны загружая файл от непроверенного источника, он может содержать изменения в базовых таблицах или вредоносные коды. Все чувствительные места загрузки подсвечиваются красным. Не выполняйте последующие этапы, если не можете проанализировать действия этих кодов или не уверены в поставщике!

    Тип выполняемого действия

    При загрузке по каждой таблице может выполняться добавление таблицы, обновление ее полей и обновление данных в таблице.

    Если name загружаемой таблицы совпадает с name таблицы в схеме — то произойдет обновление настроек таблицы и настроек полей.

    Вы можете управлять тем, какие настройки и поля будут обновлены.

    Удаление полей может быть осуществлено только через исполняемый код - его можно увидеть в поле Код каждой таблицы.

    Настройки соответствия данных внутри таблиц

    При загрузке данных имеет значение тип действия ключевые поля.

    На основе ключевого поля Тотум определяет соответствие данных, уже содержащихся в таблице и загружаемых данных.

    Тип определяет действие — добавлять и изменять, только добавлять, только изменять.

    Ключевые поля обязательно должны быть указаны в списке полей, по которым выгружаются данные.

    Соответствие ролей, дерева и категорий таблиц

    При загрузке вам необходимо указать соответствие Ролей, Дерева и Категорий в схеме, в которую ведется загрузка и в загружаемом файле.

    Например, роль Руководитель в схеме выгрузки и загрузки может иметь разные id (аналогично папки дерева и категории таблиц).

    Вам необходимо указать соответствия или указать, что необходимо создать новую запись.

    При загрузке эти соответствия будут записаны в поле matches таблицы Импорт/экспорт для последующих загрузок.

    Поиск матчесов ведется по имени файла загрузки.

    Matches для последующих загрузок

    Поле matches таблицы Импорт/экспорт определяет автоматические соответствия ролей, дерева и категорий для загружаемых схем.

    Описание totum_** является техническим и необходимо для корректной установки обновлений.

    Поле содержит массив:

    • ключи — номера id в загружаемой схеме

    • значения — номера id в текущей схеме

    Если соответствие не найдено, то загружаемый элемент создается и автоматически обновляется matches.

    Матчесы

    Коды при загрузке

    Выгрузка может содержать коды, которые будут выполнены при загрузке.

    Коды выполняются после загрузки настроек, полей и данных таблицы.

    В коде передается несколько переменных:

    • $#insertedIdsid добавленных строк, если было добавление данных.

    • $#changedIdsid измененных строк, если было добавление данных.

    • $type

      • install если таблица добавляется в пустую схему БД.
      • update если таблица добавляется в уже существовашшую схему БД.
    • $#is_table_createdtrue если таблица впервые добавлена в схему.

    Коды при загрузке выполняются без всяких ограничений по доступам!

    Использование bin/totum для автоматического и массового обновления схем

    Для обновления схемы можно использовать консольную утилиту bin/totum.

    1. Загрузите на сервер файл загрузки **.gz.ttm.

    2. Выполните из корневой папки тотума:

      # Для no-multy
      
      bin/totum schema-update MATCHES_NAME PATH_TO_FILE
      
      # Для multy для обновления всех схемы:
      
      bin/totum schemas-update MATCHES_NAME PATH_TO_FILE
      
      # Для multy для обновления одной схемы:
      
      bin/totum schema-update MATCHES_NAME PATH_TO_FILE --schema="SCHEMA_NAME"
      

    MATCHES_NAME — если загрузка производится впервые для схемы и соответсвие в Matches не будет найдено, то все элементы Дерева, Ролей и Категорий будут обработаны как добавляемые за исключением роли Создатель и будет создана запись соответствий в Matches с указанным именем.

    Использование обновлений для создания связки test — prod

    Если предполагается тиражируемое решение или проект невозможно модифицировать на боевом сервере — то:

    1. Создаем PROD и разрабатываем на нем решение. Если вы разрабатывали на TEST то начните с п.3

    2. Для no-multy

      2.1 Создаем выгрузку с PROD при помощи консольной команды:

      bin/totum schema-backup prod_dump.sql
      
      # можно не переносить логи и автоматически сжимать в gz:
      
      bin/totum schema-backup --no-logs --gz prod_dump.sql
      
      # можно не переносить некоторые таблицы:
      
      bin/totum schema-backup --no-content="table_name_1,table_name_2" prod_dump.sql
      

      2.2 Разворачиваем чистый TEST на отдельном сервере/папке и базе и загружаем созданную выгрузку:

      bin/totum schema-replace prod_dump.sql
      
      # при выполнении этой операции схема БД полностью заменяется на схему из prod_dump.sql
      
      # по умолчанию кроны при загрузке отключаются, можно это отменить
      
      bin/totum schema-replace --with-active-crons prod_dump.sql 
      

      Для multy

      2.1 Выполняем:

      bin/totum schema-duplicate ИМЯ_КОПИРУЕМОЙ_СХЕМЫ ИМЯ_СОЗДАВАЕМОЙ_СХЕМЫ URL_НОВОЙ_СХЕМЫ
      
      # кроны в этом случае отключаются автоматически
      
    3. Создаем master-выгрузку из TEST — эта выгрузка будет основной, название файла будет использовано в matches в PROD

      При создании этой выгрузки необходимо поставить галочку в поле Матчить существующие f_match_existings. Если они стоит, то при загрузке в PROD будут автоматически сматчены элементы дерева, роли и категории таблиц.

    4. Загружаем нашу master-выгрузку в PROD с двумя целями:

      Если вы разрабатывали на TEST и переносите проект на PROD, то создайте master-выгрузку с TEST, создайте чистый PROD и загрузите на него master-файл.

      Matches будут созданы по имени файла — переименуйте, если необходимо.

    5. Для обновления:

      5.1 Разрабатываем на TEST.

      5.2 Обновляем master-файл при помощи Создать по текущим настройкам

      5.3 Загружаем файл в схему или схемы через интерфейс или bin/totum.

      Если загружаете на multy в котором у вас и PROD-базы и тестовая, то необходимо исключить TEST из обновления:

      bin/totum schemas-update MATCHES_NAME PATH_TO_FILE --exclude="schema1,schema2" --exclude="schema3"