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

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

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

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

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

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

23 ответов

75 просмотров

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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта