Artur
В твоем случае N копипастов в моем 1
а, у тебя product | -> controller | -> model | -> repository | -> service | -> usecase так?
kostyaBro
а, у тебя product | -> controller | -> model | -> repository | -> service | -> usecase так?
В целом да. Но есть нюансы. Я например делаю boundedContext/model/repository/postgress Например
kostyaBro
В самой папке bounded context уже сервис так-что подпапки сервис нету
Артем
Господа, вопрос такой. Пишу rest на echo, нужно базу прикрутить. Как грамотно сделать, чтоб в отдельном пакете инициализировалась бд ( sqlx.Open) и можно было юзать ее?
Artur
а что за контекст?
business capability типа product, user, order
Artur
как микросервисы, только 1 проект
Илья
понял
kostyaBro
внутри модели репозиторий?
Да, там немного криво написал, model - это конкретное название сущности, в том пути
kostyaBro
И рядом с ней лежит репа для нее
kostyaBro
Я извращенец?
Artur
Да, там немного криво написал, model - это конкретное название сущности, в том пути
а сколько времени тратится на проектирование контекстов?
Artur
ну то есть система заметок, какие контексты видятся сразу? есть заметка, категория, пользователь, теги, картинки к заметке
kostyaBro
Ой надо смотреть от событий которые происходят в системе
kostyaBro
а сколько времени тратится на проектирование контекстов?
Пару дней предположим. Зависит от размера проекта ж
kostyaBro
И рядом с ней лежит репа для нее
Просто мне кажется логичным, репозиторий же для модели
Artur
Просто мне кажется логичным, репозиторий же для модели
ну, нет) даже в том видео что ты прислал рассказано что модель в usecase это не та модель что в repo и не та что в транспорте 3 слоя - 3 модели и мапперы
Илья
не проще маппить в одну модель и гонять её по всем слоям?
Artur
?
https://www.youtube.com/watch?v=YR9CDZqKS30&list=PLP19RjSHH4aENxkai8lzF0ocA4EZyS0vn&index=11
kostyaBro
ну, нет) даже в том видео что ты прислал рассказано что модель в usecase это не та модель что в repo и не та что в транспорте 3 слоя - 3 модели и мапперы
Ну и это видео.... Так говоришь как будто это панацея, готовый алгоритм которому всегда надо следовать)
kostyaBro
Просто тех же репозиториев для одноу модели модет быть несколько Например посгря и рам.
kostyaBro
Кароч, я бы предложил вспомнить этот диалог через месяц, если не забудет, и я покажу пример того как я раскидываю
kostyaBro
Просто то что пет проект, там какието черновики, а то что до этого было написано, было в уже написанглм большом сервисе
kostyaBro
Сейчас с нуля
Artur
я наоборот всегда говорю что вариантов миллион я сейчас юзаю этот
kostyaBro
Artur
а в следующем видео переобуваюсь ))))
Иван
можно зафигачить одну модель на все слои, можно модель для каждого слоя, можно cqrs и модель для каждого слоя + модель для запроса ответа отдельно, есть идеи куда еще глубже?
kostyaBro
К примеру у меня был репозиторий в сумме на 10+к строк
kostyaBro
Пришлось тоже придумывать структуру
Артем
ну делаешь отдельный пакет с бд, в чем проблема?
Ну смотри, я хотел написать в пакете вот так db, err := sql.Open(…) И дальше этот db использовать. Я бы хотел сразу проверить ошибку, и кинуть если произошла. А так мне в каждом методе придется проверять, если не было ошибки то используй.
kostyaBro
кто-то скажет что возвращать err из конструктора херота, ваше право)
kostyaBro
а ну еще мб надо func (*Client) Close() err сделать
kostyaBro
почему?
тот кто это говорил не переиграл меня а я так не говорию
kostyaBro
это считай был дисклеймер чтобы холивар не поднялся
kostyaBro
а то он тут легок на подъем
kostyaBro
почему?
Как я понял того чела. Конструктор должен просто отдать тебе собранные объеки и не выполнять служную логику тоесть не кидать ошибок
kostyaBro
С какой то стороны он прав. Но я против того чтобы после конструктора вызывать какой нибудь Connect() err ибо можно забыть вызвать его.
kostyaBro
и такое часто бывало когда забывали вызывать Connect
Илья
Видел в какой-то либе возврат ошибки через метод .Err()
Илья
Redis mb
Скорее всего
kostyaBro
просто ну я как пользователь
Rostislav
я не против)
можно, но нарушение SRP типо
kostyaBro
брр я как пользователь этой функции хочу получать рабочий клиент к бд, а тут он не совсем рабочий
kostyaBro
можно, но нарушение SRP типо
только ситхи все возводят в абсолют
kostyaBro
У меня в одном проекте Repository поделен на creater reader deleter expiredDropper но тогда получается что Repository который так не поделен нарушает SRP?))))
kostyaBro
Всеравно остается одна причина для изменений имхо
kostyaBro
И у Боба SRP вообще отталкивался от отделов. Чтото типо только у одного отдела может быть причина для изменений, а это вообще высокоуровнего.
kostyaBro
Если не прав поправьте, давно читал
Artur
И у Боба SRP вообще отталкивался от отделов. Чтото типо только у одного отдела может быть причина для изменений, а это вообще высокоуровнего.
не. по Бобу класс User не должен считать количество своих заказов (не забирать чужую логику) и работать с базой (модель есть модель, dao есть dao)
kostyaBro
ну и это тоже
Dmitriy
Всем привет Есть задача: Написать консольное ".exe", которое 1) Принимает аргументом картинку и текст 2) Отправляет сие методом POST на определенный URL
Dmitriy
Ну... Делай, в чем проблема?
я хочу найти исполнителя
Кіт ✙
я хочу найти исполнителя
тогда надо было как минимум вилку написать
Dmitriy
тогда надо было как минимум вилку написать
Стоимость я думаю исполнитель должен называть
Alexandr🇷🇺
Кіт ✙
принимай
ты меня знаешь, я свой http клиент делать начну. Не надо
Кіт ✙
Илья
ну всё, делаю unwatch
Кіт ✙
ты и так
Илья
ты и так
вроде нет
Кіт ✙
ну лан