Feature/launcher provider create db - #694
J0shlerB0y wants to merge 22 commits into
Conversation
Views больше не регистрируются, они разворачиваются через DataTemplates в LauncherApp.axaml по типу VM Корневые страницы (Login, DataBases, BaseManagement, UserManagement) добавляются при создании и не удаляются. Дополнительные страницы добавляются в конец через PushPage и удаляются PopPage/PopToRoot и прогресс создания базы
перевёл обратно на старый маппинг страниц
Делает то же, что MySqlDbCreateModel для MariaDB, но физически выполняется на стороне облака: первый gRPC-вызов CreateDataBase создаёт пустую схему; второй FillDataBase прогоняет SQL-скрипт и шлёт прогресс назад. Каждое сообщение стрима транслируется в IProgressBarDisplayable, поэтому wizard-страница лаунчера выглядит идентично сценарию с MariaDB. разделил интерфейс создания базы, для гтк, и ее наполнения моделью
…мысленно показывать так как они все равно не сработают. при следующем входе.
…одействия Адаптер, превращающий пару (CreationScript, UpdateConfiguration), которые исторически регистрируются в Autofac-контейнере проекта-потребителя как AsSelf, в реализацию IDbScriptsConfiguration. Нужен для GTK-десктоп-флоу: UpdaterDBAutofacModule → UserCreateDbController → MySqlDbCreateModel требуют IDbScriptsConfiguration, а сами приложения по-прежнему поставляют только CreationScript/UpdateConfiguration Адаптер избавляет их от необходимости менять регистрацию контейнера UpdateConfiguration опционален — если приложение его не регистрирует, отдаём пустой Конструирую MySqlDbCreateModel в UserCreateDbController явно — без Autofac TypedParameter, которым раньше прокидывался IDbCreateController. Теперь модель получает все сессионные зависимости в свой ctor.
Gankov
left a comment
There was a problem hiding this comment.
В Целом надо созвонится обсудить. Мне кажется что решение преусложенно. Оно вносит кучу каких то не стнадрартных подходов, пока не понимаю зачем. Будет время звони.
| public string ConnectionString { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } | ||
|
|
||
| public bool IsConnected => throw new NotImplementedException(); | ||
| public int BaseId { get; private set; } |
There was a problem hiding this comment.
Не согласен, с решением, по сути ты смешиваешь зачем то 2 различные функциональности, вход в саму админку сервера и вход в базу. Просто в моем представлении у IDbProvider не может быть базы в принцепе. Или я не понял задумки.
There was a problem hiding this comment.
Не согласен, с решением, по сути ты смешиваешь зачем то 2 различные функциональности, вход в саму админку сервера и вход в базу. Просто в моем представлении у IDbProvider не может быть базы в принцепе. Или я не понял задумки.
я все же пока что оставил BaseId он его получает от сервера после создания, чтобы потом при наполнении базы получить эту базу, иначе он никак не сможет его передать. потому что интферфейс создания базы возвращает только bool успешности, можно сделать более универсальый тип вывода функции создания, но как будто это только для облака нужно будет,
There was a problem hiding this comment.
при этом правйдер базу не наполняет, он лишь несет данные после создания базы
| /// Один шаг пайплайна создания базы. Settings-VM собирает список таких фаз | ||
| /// и передаёт его в Progress-VM, который выполняет их последовательно. | ||
| /// </summary> | ||
| public sealed class DbCreationPhase { |
There was a problem hiding this comment.
Зачем для этого целый класс?
Это делает прогресс страницу универсальной, просто атомарная операция, мне кажется, классы и нужны, чтобы инкапсулировать подобную логику.
убрана многопоточность и асинхронность, настроена конфигурация наличия возможности создать базу и мелкие доработки
IDbCreateController нигде не используется кроме UserCreateDbController.cs и тестов, так что его можно удалить
No description provided.