
Crypt
15.07.2018
23:33:16
наоборот, вроде советуют в него не смотреть

Александр
15.07.2018
23:33:45
ну глянул

Evgeny
15.07.2018
23:33:51
https://github.com/iris-contrib/examples

Александр
15.07.2018
23:33:55
дада

Google

Александр
15.07.2018
23:33:56
https://github.com/iris-contrib/examples/blob/master/routing/main.go

Evgeny
15.07.2018
23:33:56

Александр
15.07.2018
23:33:58
видели?
полный треш

Evgeny
15.07.2018
23:36:08
https://github.com/iris-contrib/examples/blob/master/mvc/overview/web/controllers/hello_controller.go

Александр
15.07.2018
23:36:51
и что?
ничего "гениального"

Evgeny
15.07.2018
23:37:04
))

Александр
15.07.2018
23:37:04
я на обычном http так-же оформляю

Evgeny
15.07.2018
23:37:08
суть не в роутах)

Александр
15.07.2018
23:37:24
проблема именно на стыках

Evgeny
15.07.2018
23:37:33
посмотри стек вызова

Александр
15.07.2018
23:37:38
config -> application -> http

Google

Александр
15.07.2018
23:38:24
когда я вижу
app := iris.New()
app.Logger().SetLevel("debug")
// Load the template files.
app.RegisterView(iris.HTML("./web/views", ".html"))
// Serve our controllers.
mvc.New(app.Party("/hello")).Handle(new(controllers.HelloController))
это пиздец

Evgeny
15.07.2018
23:38:37
ты не туда смотришь)

Александр
15.07.2018
23:38:43
я туда смотрю как раз
как регистрируют роуты и как огранизованы пакеты

Evgeny
15.07.2018
23:39:12
стек вызова сервиса и репозитория и как они к контроллеру привязаны
о чем я выше писал

Александр
15.07.2018
23:39:22
гвоздями
в main экспортируют github.com/iris-contrib/examples/mvc/overview/web/controllers
и дальше через new кормят

Evgeny
15.07.2018
23:41:01
стой стой)
ты не видишь разве?

Crypt
15.07.2018
23:41:33
кто?
https://github.com/avelino/awesome-go/pull/1137

Александр
15.07.2018
23:43:05
я посмотрел базу, прибито гвоздями
как устраены там репозиторий уже фиолетово
"откровение" века прямо
плюс мы конечно получим две пудовые гири на ноги, в виде фрейворка
вообще не вариант

Google

Evgeny
15.07.2018
23:45:56
я не говорю тянуть фреймворк
я говорю про подход

Александр
15.07.2018
23:46:11
а что там инновационного то?

Evgeny
15.07.2018
23:46:22
нет никаких иноваций
остынь)
я дал совет
читай выше

Александр
15.07.2018
23:46:53
ты дал совет как угробить приложения за три простых шага, а я спрашивал про бест практик ?
тащат блин рельсы какие то в Go
я в пыхе такого нахлюпался за 10 лет знаешь сколько?

Evgeny
15.07.2018
23:48:00
берешь круды разбиваешь на сервисы, получается отдельные пакеты которые ты можешь переиспользоваться. А в хендлере у тебя не выходит ~500 строк
каждый сервис пробрасываешь в контроллер через интерфейс
а в контроллере у тебя всего одна строчка поторой ты получаешь серилизованную структуру

Александр
15.07.2018
23:48:50
ну чисто логически
кроме как в HTTP
просто наплодим сущностей

Evgeny
15.07.2018
23:49:19
о боже)

Crypt
15.07.2018
23:49:21
JSON RPC например

Александр
15.07.2018
23:49:24
ради прекрасного далеко

Crypt
15.07.2018
23:49:25
GRPC

Google

Evgeny
15.07.2018
23:49:28
+

Александр
15.07.2018
23:49:31
так
где я в вводной писал что-то про GPPC?
машина-самолет с возможностью посадки на воду

Evgeny
15.07.2018
23:50:33
где ты их переиспользуешь это уже твое дело)
только не говори что ты пишешь приложение которое не соответствует soap

Александр
15.07.2018
23:50:33

Crypt
15.07.2018
23:50:59
один хрен должны быть тонкие контроллеры

Александр
15.07.2018
23:51:16
я обернул бизнесовые сущности в dao

Crypt
15.07.2018
23:51:24
на 500 строк?)

Александр
15.07.2018
23:51:30
контролеры и так тонкие по 1 методу считай дергают дао

Evgeny
15.07.2018
23:51:47
получилось что бизнесовые сущности заперты в dao?

Александр
15.07.2018
23:51:56
они как бы и заперты
я же изолирую базу данных от бизнеса

Evgeny
15.07.2018
23:52:22
тут уже вопрос в расширяемости и в поддержке кода без изменения логики

Александр
15.07.2018
23:53:17
если у нас есть мальчик боб, у которого есть мячи
мы не должны думать об реализации этого в бд
хоть на 100 таблиц, хоть не реаляционное хранилище
у нас есть методы "добавить мяч" "удалить мяч" "убить мальчика"
интерфейсы этого всего это пакет dao
реализация на конкретном хранилище dao_postgres например

Google

Evgeny
15.07.2018
23:56:33
окей
теперь пример, ты хочешь переопределить какой то метод потому что приехала новая миграция в базу, при этом ты обновишь пакет, как ты будешь уверен что сервис - X не будет крашится?

Александр
15.07.2018
23:57:10
я просто поправлю реализацию внутри дао
наружу это вообще никак не скажется
dao меняется только в случаи изменении бизнес требований

Evgeny
15.07.2018
23:57:46
но у тебя изменится структура которая возвращает dao
что если в миграции проехался alter?

Александр
15.07.2018
23:57:55
не изменится
ты что думаешь я из dao сырую структур возращаю? у меня есть пакет models
там структуры бизнесовые
и про боба и про мячи
как они заполняеются это проблема дао

Evgeny
16.07.2018
00:00:49
Вооот)
теперь мы подошли к сути, что теперь приходится затрагивать неприкосаемую сущность

Александр
16.07.2018
00:01:05
поменялась бизнес логика или что?

Evgeny
16.07.2018
00:01:40
ты ведь меняешь пакет
на котором весь бизнес завязан?
значит логика меняется
в общем ладно
я спать

Александр
16.07.2018
00:02:29
еще раз, в каком случаи я его меняю?

Evgeny
16.07.2018
00:03:11
я просто поправлю реализацию внутри дао

Александр
16.07.2018
00:03:22
если ДБА решил поменять базу, я поменяю реализацию бизнеса (трону пакет dao_postgres)
при этом его интерфейс затронут не будет
и возращаемые значения тоже (они в моделях)