Val
а что еще актуально?
Denis
А ты чекани код
https://app.codacy.com/app/RyanThompson/streams-platform/dashboard?bid=5227819
Denis
Категория A
Val
вроде ява с кучей $$$
Denis
Да - ООП чистый, как твои сокеты или функции Совы
Denis
NoDDD
Denis
Это DDD-framework
Denis
Там метакод
Denis
В рантайме генерятся модели и структура БД корректируется
Denis
Есть у вас такой софт?
Denis
И воркфлоу на классах
Denis
@n1n3b1t есть гитлаб?
Val
неа
Denis
Там OAuth с гитхаб
Val
тогда есть)
Denis
Ник?
Denis
n1n3b1t
Denis
???
Val
n1n3b1t
Denis
https://gitlab.com/pyro-plus/exporter-extension
Почитай ридми
Denis
Примеры
Denis
То есть ты берешь манагера, учишь его работать в админке, а это плагин тебе заменяет разраба, по 600-1000 час
Denis
Не совсем, канеш
Denis
Но экономия
Val
а для чего миграция то?
Denis
Для нее же
Denis
Туда-обратно
Denis
Но можно это все делать из админки
Denis
Миграции проводить
Denis
@ZeroBias Могу расшарить
Val
не разу не сталкивался с проблемами при миграции
Val
но у меня максимум клиент, и sqlite
Denis
Denis
Denis
Ты можешь ее видоизменять
Denis
А статики - не мое )))
Val
короче модно мапит одну модель в другую?
Denis
Композитные да
Denis
Но не только это
Denis
Надеюсь меня не забанят )))
Это старый текст. Писал я сам.
Denis
Думаю надо начать с аддонов и автолодера...
Для тех кто устанавливал лару - Pyro имеет некоторые отличия:
В пиро папка app почти пуста (в ней все равно можно писать, но, ай белив - это лишнее). То же самое можно сказать и относительно содержимого папок database и resources.
The best practice - это держать свой код в аддонах.
АДДОНЫ.
Каждый аддон - отдельный пакет на пакаджисте (при желании на гите), и, следовательно - имеет свой composer.json, в котором и прописан PSR-4 неймспейс для автолодера. Все аддоны, являются наследниками одного класса, и всего их пока 5 видов:
1. Module - представляет из себя неймспейс и раздел в админке. Может содержать несколько моделей (streams), а так же полей (fields). Стоит заметить, что поля, могут быть реюзабл в пределах одного неймспейса (модуля) для нескольких моделей (streams). Использование определенного поля, определенной моделью и называется связью (assignment).
2. FieldType - тип поля служит для определения правил миграции и дальнейшего взаимодействия с БД, для одной ячейки данных у модели. Он содержит тип поля, но может содержать аксессор, мутатор, схему - классы в которых и описываются эти правила. Отношения - тоже описываются здесь (я не имею ввиду прямого указания модели).
3. Theme - тема. Тут особо нечего - бывают двух видов: админка и фронт. Показываются в настройках в админке (хран в БД). Может быть перекрыто последовательно, из нескольких мест в ФС (самое сильное - .env)
4. Plugin - это тупо плагин твиг.
5. Extension - с ним ситуация, как с бубями в преферансе: "не с чего ходить - ходи с бубей". Внутри может быть размещена любая логика. Оно может быть связано по универсальному ключу с другими аддонами, что, по сути, является еще одним способом расширения с наследованием, но речь сейчас не о нем.
Важно, что, несмотря на разделение, благодаря общему родителю, аддоны могут пересекаться классами. Например, не обызательно создавать отдельный аддон для плагина, достаточно создать класс плагина в модуле и подключить его в сервис-провайдере. Это касается почти всего.
Класс сервис провайдера может содержать любой из аддонов.
МИГРАЦИИ и устройство БД.
Платформа стримс имеет свой расширенный мигратор, который способен читать миграции, заданные в декларативном стиле. Файлы миграций создаются автоматически, при скаффолде аддонов определенных типов, а также при скаффолде стрима(модели).
The best practice, если мы говорим о модуле, ИМХО - иметь один файл миграции для модуля, в котором описываются все используемые поля, и по одному на каждую модель - в них описываются параметры моделей и принадлежность к ним полей. Важно, что в любой миграции, могут быть использованы стандартные для Ларавел up() и down() методы.
БД имеет в названиях своих таблиц жесткую зависимость $app_reference, неймспейса и модели.
Структура такова:
applications - "корневая" таблица, она имеет связь с applications_domains и это единственные таблицы, имеющие название без префикса. Все другие таблицы имеют в качестве префикса в названии "{$app_reference}_"
streams, fields и assignments - это "служебные" таблицы. Они содержат информацию о:
- других таблицах с базе и их свойствах (streams)
- полях, которыми имеют возможность обладать таблицы (fields)
- реальных фактах обладания каких-то таблиц, какими-то полями (assignments)
Остальные таблицы имеют жесткую зависимость от описаных выше!
"{$app_reference}_{$namespace_slug}_{$stream_slug}"
А если стрим (ряд) имеет поле translatable === true, то еще и
"{$app_reference}_{$namespace_slug}_{$stream_slug}_translations"
Это не все - могут быть еще вариации конфигураций. Не будем на них останавливаться.
Когда меняется содержимое служебных таблиц (а это модели ларки), наблюдатель триггерит событие Eloquent, которое, в свою очередь, запускает команду - одну из команд - проводящих маленькую миграцию, соответствующую изменениям.
Любые другие таблицы могут быть безболезненно созданы в базе, если только их имена не имеют конфликтов со схемой описанной выше.
Denis
Мне нравится что имена там строгие!
Denis
Вообще меня многому научило то, что я писал туда.
Следовать чужому кодстайлу, например. Или читать исходник, вместо доков.
Val
js не хватает кодстайла нормального
Denis
ога
Val
но всяко лучше MS)
Val
называть функции с большой буквы это изврат
Denis
Val
ага
Denis
([[]][[]]+[])[+!![]+!![]+!![]+!![]]+([[]][[]]+[])[+![]]
Denis
Запускай в консоли браузера
Denis
Вот тебе и кодстайл JS
Denis
А cross-env - говно
Олександр
почему кросс енв говно?
Denis
Не грузит .env
Denis
require('dotenv').load()
Denis
Все ровняк
ℝei
Denis
Denis
А как надо с cross?
ℝei
это совсем для других целей же
Denis
Я видел у совы
Denis
Ща нет врем искать
ℝei
"start": "cross-env NODE_ENV=production node server"
ℝei
это для npm скриптов чтобы под разным окружением одинаково запускались
Denis
Окей. А где ты хранишь всякие данные? Например, которые в гит не должны попасть...
ℝei
ℝei
Denis
Load грузит в process.env
ℝei
Denis
Я не врубаюсь а так че не пашет?
"start": "NODE_ENV=production; node server"
Denis
ℝei
Denis
Аааа
Denis
Вот Билл пидр
ℝei
там просто ебучие \\\ бэкслеши, вместо нормальных //
Denis
Да я юзал раньше тож
Sergey
Val
всмысле?