Ayrat
Stas
Stas
но очень похоже движение туда)
Anatoly
так, я сгорел
Anatoly
чувак взял, заюзал Result, вернул из метода
Anatoly
но нихера не проверяет, потому что в случае ошибки токен будет нулл, ну и нам сервер 401 вернёт
Vasily
В фшарпе бы такого не было!!!!1111
Anatoly
а зря удалил
Ayrat
и всё!
Anatoly
это примерно цитата из того, что я сказал, когда понял, что происходит!
Anatoly
остановите планету, я сойду, в общем.
Roman
Stas
Vasily
Roman
ДАВАЙ ВОТ НЕ БУДЕМ
можно гораздо круче. Тут хотя бы ворнинг будет и потом даже мб понятный эксепшн в рантайме.
Настоящие ниндзя пользуются техникой let inline value result = result |> Result.toOption |> Option.get
И теперь нет ворнинга, кидается NullReferenceException, и благодаря inline ебитес с отладкой
Andrew
Ребята опять я со своим эластиком влезу
Кто знает. можно ли в рамках _search достать total count в индексе которые подошли под запрос?
count который приходит по умолчанию ограничивается 10000
Если я делаю отдельный запрос на _count в индексе я получаю актуальный результат. но я не хочу 2 раза запрос выполнять
Vasily
Andrew
Вроде @aensidhe ты откликнулся в прошлый раз
Anatoly
Anatoly
он же там возвращается по дефолту
Andrew
Andrew
А у меня больше айтемов в индексе
Roman
Roman
там нормальный каунт будет
Vladislav
Andrew
Roman
но скорлл это не для юзер реквестов, скорее для бэкграунд жоп
Andrew
Ну мне вообще для чего нужно
Andrew
Мне пейджинг нужно сделать
Andrew
Корректный
Roman
Andrew
Всякие totalCount вернуть
Vladislav
Andrew
И прочее
Andrew
Anatoly
Andrew
Anatoly
никого не волнует точное до циферки тотал, когда он большой
Roman
ну нам это нужно, когда надо достать ВСЕ данные из эластика. Но это, разумеется, не для конечного пользователя.
Andrew
Ну фишка скролла я так понял основная в том
Andrew
Что он позволяет держать в памяти реквест
Andrew
Чтобы его быстренько потом перебирать дальше
Andrew
Если нужно
Andrew
По страницам
Roman
ну там в доке написано все, в общем. Дергаешь 1 и тот же запрос, получаешь каждый раз следующую страницу
Andrew
Слушайте, а с ?scroll=1m к примеру вернуло норм каунт
Andrew
Реально
Shub
Shub
Shub
match myFunc arg1... arg1024 with
| Ok _ -> failwithf "not implemented"
| Error e when e == "success" -> return okWithHttpContent Marvel.Json.parse e.ToJson
| _ -> return okWithHttpContent "no data" // TODO: talk to Rajeev about this case
Ayrat
Roman
Error e when e == "success" это 5
Roman
прям сразу с Радживом поговорить захотелось
Анна
Shub
Л - логика
у нас фронтенд например парсит регулярками status messages, потому что не придумали, как репортить ошибки из... отовсюду
Shub
ну в новом коде придумали, потому что таки нашлись люди, которые писали на .NET
Shub
кстати, я рассказывал, как у нас устроен сКеЙлИнГ?
Roman
Я не уверен, что хочу открывать эту дверь
Roman
Хотя о чем я, не мне ж с этим ебаться. Рассказывай скорей
Shub
короче, когда-то давно у нас бекенд обслуживал сразу все склады
Shub
но однажды по какому-то там недосмотру на фронтенде один склад зафлудил бекенд
Shub
(несложная задача, при среднем латенси в секундах)
Shub
была придумана АРХИТЕКТУРА, причем совместно с девопсами
Shub
теперь на каждый склад деплоится отдельный сервис, ну точнее, группа микросервисов
Анна
Roman
Shub
каждый микросервис в этой группе параметризуется номером склада. в группе микросервисов есть в т.ч. и апишечка
Shub
в общем, девопсы взяли Envoy (патамучта на ГО), дописали в него кастомный маршрутизатор апстрима, который внезапно зависит от url path
Shub
но при этом не поддерживает url rewrite, а проксирует прям с тем урлом, с которым был запрос
Shub
в результате пути к апишечке выглядят как-то так https://bc-name.fqdn./thor/api/bc-name/fc/<fc-id>/....
Shub
в результате фронтенд должен знать, что а) конкретная апишечка поддерживается конкретным ВС, б) конкретный ВС задеплоен на конкретном fqdn, и в) (свежее) у BC имеется версия в FQDN
Shub
часть, которая отвечает за маршрутизацию, принадлежит девопсам и они ее отдавать не собираются. поэтому каждый раз, когда надо добавить новый апстрим - на три дня тягомотины с тикетами
Shub
ну там по мелочи еще то, что апишечка - псевдоREST в RPC-style, что статусов у нас три - 200, 403 и 500, что ошибки надо извлекать из status string
Shub
разумеется, версионности нет, сам прокси не проксирует ничего кроме request body (я убил две недели, чтобы завести swagger)
Shub
фронтенд говорит "это безумие, но мы ничего менять не будем, оно дико хрупкое, нам лишние проблемы ни к чему"