170 похожих чатов

Так чатик. К вам вопрос. Пишется библиотека для WebAuthn. Дошло дело

до включенных батареек. А именно: реализация стораджа.

Условно чтобы конечный пользователь библиотеки написал services.AddWebAuthnMsSql(connStr) и у него всё поехало.

И вот у меня вопрос. А как вам лично было бы удобнее работать с миграциями?
1) Готовый пакет, скажем Lib.MsSql.Migrations DbContext’ом внутри под вашу конкретную базу и экстеншоном к хосту, написать host.ApplyWebauthnMigrations и создалась база с таблицами.
2) Готовый пакет Lib.MsSql.Migrations, у которого из зависимостей только ADO драйвер под конкретную базу и метод «накатить схему». Ну т.е. никакой истории миграций и всего остального.
3) «Я сам знаю как лучше, дай мне голый SQL, я дальше разберусь». Условно SQL в Readme.md под конкретный сторадж.

Либо какой-то альтернативный вариант.

23 ответов

35 просмотров

это ты про миграции, которые накатывались бы в билд тайме?

Roman-Bukin Автор вопроса

меня как юзера рантайм миграции либ мало волнуют. Я вам выдаю коннекшн стринг и тип БД, пускай либа сама справится со своими миграциями в рантайме. Но я в целом не особо любитель накатывать в рантайме, поэтому я бы хотел накатить в init container, а для этого мне нужна msbuild таска или чот такое

Roman-Bukin Автор вопроса
Ayrat Hudaygulov
меня как юзера рантайм миграции либ мало волнуют. ...

Только подразумевается что ты ставишь одну конкретную реализацию и её юзаешь.

Roman Bukin
Только подразумевается что ты ставишь одну конкрет...

ну я говорю .AddYobaWebAuthN(opts -> opts.DbType = "postgres" opts.ConnString = "..." ) а ты уж там разберись как на неё накатить!

Roman-Bukin Автор вопроса
Roman Bukin
Только подразумевается что ты ставишь одну конкрет...

В противном случае у тебя абсолютно всё что есть внутри - на интерфейсах, все public методы виртуальные. Можешь собрать любую конструкцию

Я думаю, что норм сделать 1 и 3. 1 вариант можно будет юзать как из приложения, так и из отдельного проекта. 3 для любителей миграции схем держать в sql файлах

Имхо лучше дай SQL, а кому надо — завернут его в свою либу с миграциями, и им станет норм. Тебе меньше сношаться, и юзерам тоже (я вот, например, хз, как накатить несколько наборов миграций на разные датаконтексты и всё такое сразу разом на стартапе, и уж тем более на паблише или когда там ещё людям в голову взбредёт это делать). Если по мере развития либы будут апдейты схемы — то можно их мини-патчами выпускать вместе с релиз ноутами, а интеграция с какими-нибудь там EFCore'ными или даже флюент миграциями будет вечным источником попоболи для тебя. В данном случае, имхо, лучше эту попоболь переложить на юзеров.

у меня в ближайшем будущем базы все nosql, так что хотелось бы инструкций как такую либу к nosql подрубать и как оно будет между версиями работать

V S
у меня в ближайшем будущем базы все nosql, так что...

Тебе просто нужен другой сторадж. Я так понимаю, в либе будет интерфейс стореджа, и (потенциально) несколько искоробочных реализаций — под разные СУБД там или под БД провайдеры. Для NoSQL просто пишется ещё один сторедж, ну или же берётся искоробочный, если у тебя популярный NoSQL типа Монги.

Dr. Friedrich von Never
Тебе просто нужен другой сторадж. Я так понимаю, в...

ну вот я на это и надеюсь) чтобы либа как-либо не предполагала sql сторадж под собой

Roman-Bukin Автор вопроса
V S
у меня в ближайшем будущем базы все nosql, так что...

Там модель для хранилища развязана от основных моделей. За исключением енамов - они переиспользуются. В целом можно сконвертировать в JSON или любой другой формат внутри реализации интерфейса хранилища и сложить в любую бд

Roman Bukin
Там модель для хранилища развязана от основных мод...

Если ты можешь хранить в nosql сразу, лучше так и сделать

Roman-Bukin Автор вопроса
V S
ну вот я на это и надеюсь) чтобы либа как-либо не ...

Там 4 интерфейса где на вход/выход либо POCO, либо строки/массивы байт

Dr. Friedrich von Never
Лучше кому?

Лучше всем, сделать из sql nosql - изи, а вот наоборот - довольно трудно

Roman-Bukin Автор вопроса
V S
а покажи)

А это чуть попозже. Надо репозиторий на другую оргу перенести.

Roman Bukin
Там модель для хранилища развязана от основных мод...

кстати, насчёт энамов - в базе лучше их интами не хранить, а ориентироваться на string based enums

IHueMoeStorage + одна реализация на ef core для примера. Куда я твою отдельную базу деплоить буду? В свою же от сервиса авторизации, чтобы ты в минорном апдейте либы в миграцию добавил drop users; ?

сделать пачку интерфейсов типа IUserRepository и пусть юзер ебется с тем как он хочет их хранить

Dr. Friedrich von Never
Имхо лучше дай SQL, а кому надо — завернут его в с...

Как он даст SQL, если у него много баз поддерживается и возможно будет ещё больше

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта