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

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

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

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

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

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

23 ответов

110 просмотров

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

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, если у него много баз поддерживается и возможно будет ещё больше

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта