Skip to content

Feature/launcher provider create db - #694

Open
J0shlerB0y wants to merge 22 commits into
developfrom
feature/LauncherProviderCreateDb
Open

J0shlerB0y wants to merge 22 commits into
developfrom
feature/LauncherProviderCreateDb

Conversation

@J0shlerB0y

Copy link
Copy Markdown
Contributor

No description provided.

J0shlerB0y and others added 12 commits April 28, 2026 18:57
 Views больше не регистрируются, они разворачиваются через DataTemplates в LauncherApp.axaml по типу VM

Корневые страницы (Login, DataBases, BaseManagement, UserManagement) добавляются при создании и не удаляются. Дополнительные страницы добавляются в конец через PushPage и удаляются PopPage/PopToRoot

 и прогресс создания базы
перевёл обратно на старый маппинг страниц
Делает то же, что MySqlDbCreateModel
для MariaDB, но физически выполняется на стороне облака:
первый gRPC-вызов CreateDataBase создаёт пустую схему;
второй FillDataBase прогоняет SQL-скрипт и шлёт
 прогресс назад. Каждое сообщение стрима транслируется в
 IProgressBarDisplayable, поэтому wizard-страница лаунчера
 выглядит идентично сценарию с MariaDB.

разделил интерфейс создания базы, для гтк, и ее наполнения моделью
…мысленно показывать так как они все равно не сработают. при следующем входе.
@J0shlerB0y
J0shlerB0y requested a review from Gankov as a code owner May 6, 2026 18:30
J0shlerB0y and others added 4 commits May 6, 2026 22:31
…одействия

Адаптер, превращающий пару (CreationScript, UpdateConfiguration), которые исторически регистрируются в Autofac-контейнере проекта-потребителя как AsSelf, в реализацию IDbScriptsConfiguration. Нужен для GTK-десктоп-флоу: UpdaterDBAutofacModule → UserCreateDbController → MySqlDbCreateModel требуют IDbScriptsConfiguration, а сами приложения по-прежнему поставляют только CreationScript/UpdateConfiguration
Адаптер избавляет их от необходимости менять регистрацию контейнера
UpdateConfiguration опционален — если приложение его не регистрирует, отдаём пустой

 Конструирую MySqlDbCreateModel в UserCreateDbController явно — без Autofac TypedParameter, которым раньше прокидывался IDbCreateController. Теперь модель получает все сессионные зависимости в свой ctor.

@Gankov Gankov left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В Целом надо созвонится обсудить. Мне кажется что решение преусложенно. Оно вносит кучу каких то не стнадрартных подходов, пока не понимаю зачем. Будет время звони.

Comment thread QS.Project.Avalonia/Dialog/AvaloniaInteractiveQuestion.cs
public string ConnectionString { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

public bool IsConnected => throw new NotImplementedException();
public int BaseId { get; private set; }

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не согласен, с решением, по сути ты смешиваешь зачем то 2 различные функциональности, вход в саму админку сервера и вход в базу. Просто в моем представлении у IDbProvider не может быть базы в принцепе. Или я не понял задумки.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не согласен, с решением, по сути ты смешиваешь зачем то 2 различные функциональности, вход в саму админку сервера и вход в базу. Просто в моем представлении у IDbProvider не может быть базы в принцепе. Или я не понял задумки.

я все же пока что оставил BaseId он его получает от сервера после создания, чтобы потом при наполнении базы получить эту базу, иначе он никак не сможет его передать. потому что интферфейс создания базы возвращает только bool успешности, можно сделать более универсальый тип вывода функции создания, но как будто это только для облака нужно будет,

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

при этом правйдер базу не наполняет, он лишь несет данные после создания базы

Comment thread QS.Cloud.Client/DataBase/QsCloudScriptsConfiguration.cs Outdated
Comment thread QS.Cloud.Client/DataBase/QsCloudScriptsConfiguration.cs Outdated
Comment thread QS.Cloud.Client/Scripts/new_empty.sql Outdated
Comment thread QS.Launcher/ViewModels/PageViewModels/DataBase/DataBasesVM.cs
/// Один шаг пайплайна создания базы. Settings-VM собирает список таких фаз
/// и передаёт его в Progress-VM, который выполняет их последовательно.
/// </summary>
public sealed class DbCreationPhase {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем для этого целый класс?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем для этого целый класс?

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

Comment thread QS.Launcher/QS.Launcher.csproj Outdated
Comment thread QS.Project.Core/Dialog/IProgressBarDisplayable.cs
Comment thread QS.Updater.Core/DBScripts/DbScriptsConfigurationAdapter.cs Outdated
убрана многопоточность и асинхронность, настроена конфигурация наличия возможности создать базу и мелкие доработки
IDbCreateController нигде не используется кроме UserCreateDbController.cs и тестов, так что его можно удалить
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants