Рад, что есть взаимопонимание и общее видение ситу

Рад, что есть взаимопонимание и общее видение ситуации. Но немного еще добавлю информации, к слову.

Так вот, к слову о некоторых моих наработках, которые кому-то все же пришлись по душе, хоть и не всем. Там, где они были использованы, они продолжают работать, даже если были встроены несколько лет назад. Особый пример: https://www.radimax.ru/ Это второй сайт, где я использовал Smarty (первый был моим личным проектом и давно уже канул в лету). На нем же развивался modxSite со своего первоначального вида. И хотя сайт пережил несколько глобальных апгрейдов, заложенная в него основа все еще работает.

modxclub.ru последние часы отживает на тех еще технологиях. И хотя он уже наполовину JS-овый, основное ядро все еще на modxSite, хоть уже и без Smarty.

А недавно вот помогал с обновлением shopModx https://modxclub.ru/topics/shopmodx-oshibki-v-rabote-magazina-pri-obnovlenii-s-versii-2.2.10-na-2.6.5-2806.html Обновился MODX с версии 2.2.10, а это, на минуточку, релиз от 07.10.2013 :) https://modx.com/download/other-versions?releaseKey=revolution-2.2.10-pl На обновление я потратил меньше часа, просто обновил пакеты, пару контроллеров подправил и все. И магазин дальше поехал работать (к слову, поломались только некоторые функции в админке из-за глобальных изменений ее на уровне MODX, а во фронте работало все, кроме одного Ajax-запроса).

Это все не может не радовать. Но знаете в чем прикол? В том, что за два дня я переписал все это на JS, то есть блоги, топики, комментарии, рейтинги, авторизацию-регистрацию и т.п., а так же дописываю импортер для переноса старых данных в новую базу. И еще различные плюшки накидал.

Вот немного скринов: http://joxi.ru/n2YdR0WHoD4g4m http://joxi.ru/MAjz7eNc4B8klA http://joxi.ru/L21WpJ8I83WzJr

Когда накачу обновления, сможете это погонять самостоятельно.

Так к чему я это? Надежные проверенные технологии это конечно хорошо. Но в наше время немаловажна скорость разработки и совместимость с чужими технологиями. За два дня я столько вещей с нуля написал, столько всяких вариантов испробовал, что на MODX я это делал бы не один месяц. Я серьезно. Чего только стоит работа с базой данных. Попробуйте в MODX поставить несколько компонентов, которые под себя создают таблицы с одинаковыми названиями, и быть уверенными, что все правильно поставилось, и нет нигде логических ошибок в базе данных.

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

К примеру, вот так выглядит результат успешного выполнения теста:

  ✓ 
  modxclub Verify prisma Schema
    ✓ Check type "Route"
    ✓ Check type "User"
    ✓ Check type "Resource"
    ✓ Check type "Tag"
    ✓ Check type "ResourceTag"
    ✓ Check type "Vote"
    ✓ Check type "Import"
    ✓ Check type "Log"

  modxclub Verify API Schema
    ✓ Check type "Route"
    ✓ Check type "User"
    ✓ Check type "Resource"
    ✓ Check type "Tag"
    ✓ Check type "ResourceTag"
    ✓ Check type "Vote"
    ✓ Check type "Import"
    ✓ Check type "Log"

А вот так с ошибками:

  Verify prisma Schema
    ✓ Check type "Query"
    ✓ Check type "TestUser"

  Verify API Schema
    ✓ Check type "Query"
    ✓ Check type "TestUser"

  modxclub Verify prisma Schema
    ✓ Check type "Import"
    ✓ Check type "Log"
    ✓ Check type "User"
    1) Check type "Resource"

  modxclub Verify API Schema
    ✓ Check type "Import"
    ✓ Check type "Log"
    ✓ Check type "User"
    2) Check type "Resource"


  10 passing (11ms)
  2 failing

  1) modxclub Verify prisma Schema
       Check type "Resource":
     Error: the string "Can not find field Resource:template" was thrown, throw an Error :)
  

  2) modxclub Verify API Schema
       Check type "Resource":
     Error: the string "Can not find field Resource:published" was thrown, throw an Error :)

Так что, я думаю, в будущее надо смотреть обязательно.

UPD: вот гляньте, подключил 4 модуля к проекту и выполнил деплой схемы в БД: https://gist.github.com/Fi1osof/139541297717c61f459022a53b082e68

Подключение модулей выглядит вот так:

import UserModule from "@prisma-cms/user-module";
import ResourceModule from "@prisma-cms/resource-module";
import SocietyModule from "@prisma-cms/society-module";

// ...

this.mergeModules([
  SocietyModule,
  UserModule,
  ResourceModule,
]);

После этого в консоли выполняем PORT=4001 endpoint=$endpoint yarn deploy и все, получаем результат. В данном случае было создано несколько таблиц и связей между ними. При чем если подобные схемы уже были, они просто дополнили друг друга и все.

UPD2: А еще радует очень то, что при попытке деплоя, если удаляются какие-то колонки или таблицы и есть данные, которые при этом будут утеряны, деплой завершается с ошибкой, то есть вероятность потери данных при этом исключается.