Dr. Friedrich
Есть такая библотека для GraphQL, называется HotChocolate. Там типы описываются таким образом: desc.Field(x => x.Features) .Description("List of features.") .Type<NonNullType<ItemFeatureType>>(); Для возвращаемых типов обычно отдельно описывается тип, но у меня возникла задача конвертирования типа в скалярный, по заданному условию. Чтобы одно и то же не писать по 100 раз, я сделал Extension метод: public static IObjectFieldDescriptor LocalizableString<T>( this IObjectTypeDescriptor<T> descriptor, Expression<Func<T, LocalizableString>> propertyOrMethod) { var compiled = propertyOrMethod.Compile(); var exp = (Expression<Func<T, object>>) new ReturnTypeVisitor<T, object>() .Visit(propertyOrMethod); return descriptor .Field(exp) .Resolver(x => { var context = x.Service<HttpContext>(); var value = compiled(x.Parent<T>()); var language = HttpContextUtility.ExtractLanguage(context); return value?.GetOrDefault(language) ?? string.Empty; }) .Type<StringType>(); } И вызываю его так: desc.LocalizableString(x => x.Name) Как ты видишь, метод Field принимает в качестве аргумента Expression<Func<T, object>>, а у меня тип Expression<Func<T, LocalizableString>>.
отсос
Dr. Friedrich
Это сарказм?)
Нет, почему сарказм?
Dr. Friedrich
С каких пор Expression.Compile() начал работать в произвольном провайдере?
Nikolay
Нет, почему сарказм?
Аа, ладно. Просто код то компилируется
Dr. Friedrich
Я бы твою задачу решал, сгенерив свой собственный экспрешен. Должно быть макси просто
Vasily
Мазохизма много, толка мало
Dr. Friedrich
Смотри, у тебя уже есть Expression.Lambda с Body и Arguments
Dr. Friedrich
Надо просто из неё сконструировать новую лямбду с другими типопараметрами.
Dr. Friedrich
Даже боди не надо менять вообще имхо
Dr. Friedrich
Хотя надо будет попробовать, конечно, мало ли вдруг надо экспрешен на апкаст самому заэмитить.
Ayrat
Я бы тоже экспрешн пересобрал
Dr. Friedrich
Но это прям ваще просто
Dr. Friedrich
Как два байта обасвальт
Ayrat
Звучит как изи
Nikolay
Я, честно говоря, вообще ценность graphql не понимаю
Ну есть у него свои плюсы, например, не зависит от протокола, есть всякие subscription'ы, удобно описание делается, директивы тоже прикольные
Dr. Friedrich
Я, честно говоря, вообще ценность graphql не понимаю
Это отдельный ваще разговор. У него ТЗ такое, мне больше информации не нужно
Nikolay
С ним гораздо удобнее работать, чем с всякими рест апи, ибо гораздо лучше стандартизирован, и просто не даст тебе сделать не правильно.
Nikolay
Да и в том же рест апи, иногда у тебя параметры передаются в боди, а иногда в урле, что это за бред вообще. А когда у тебя куча параметров, например фильтры, у тебя получается очень стрёмный и нечитаемый урл.
Dr. Friedrich
Я вот так и не понял, как запросы из graphql транслировать в SQL
Dr. Friedrich
Кажется, это супер больно
Dr. Friedrich
Ну если пытаться как-то сразу общий случай охватить.
Nikolay
Я вот так и не понял, как запросы из graphql транслировать в SQL
Ну в бэке GraphQL это немного боль да. Обычно не парятся, и делают 100500 запросов
Nikolay
Но, обычно юзают nosql
Vasily
Я считаю, страдать должны js макаки
Nikolay
И там ты либо одним запросом инстантно вытаскиваешь всю нужную требуху, и отдаёшь часть, либо делаешь отдельные запросы к другим коллекциям, как бы ты и делал в случае с обычным рест апи.
Nikolay
А так вообще, по идее, всё можно красиво оформить с помощью паттерна спецификация, но я пока неосилятор :)
Vasiliy
let strip chars = String.collect (fun x -> if Seq.exists((=)x) chars then "" else string x) strip "xyz" "123x32y34z";; как метод collect работет? Что за магия происходит, т.е. как передается сразу второй аргумент? 😱
Vladislav
Partial application
Vasiliy
аааа, все понял, спрс
Aleksandr
Вместо C++ там должен быть Жюль Верн
Shub
https://news.ycombinator.com/item?id=19658553
Shub
кто-то в интернете посмел критиковать CosmosDB, лол
Hog
кто-то в интернете посмел критиковать CosmosDB, лол
Да там сборище неумех каких-то похоже!
Hog
Vasily
Гриша ужрался,походу
Vladislav
@omgszer так и есть?
Vladislav
Ща на аглеском учились понимать айриш акцент
Vladislav
Ебать они сверлят канешн
Vladislav
Нихуя не понятно
Vasiliy
Народ, а кому нибудь приходилось находить разницу между отображение Excel и Google sheets и программно генерировать Google Sheets?
Ayrat
@omgszer так и есть?
Тут много акцентов, я недавно посылал жоский из провинции. В Дублине ещё ничо
Ayrat
https://youtu.be/jsUvcjk8J5c
Vasiliy
Звучит как хрень
очень большая и херовая. Фирма отказалась от Офиса, и тепер надо уметь открывать excel файлы в sheets. А там есть расхождение в форматирование и это все пиздец.
Vasily
Проще переучить всех на новый формат
Vasiliy
Да это понятно, просто пиздец как много кода завязана именно на Excel. И мне становится страшно, когда представляю сколько придется переделывать.
Vasily
Минуточку
Vasily
Формулы поменялись или что?
Vasiliy
так совсем разные подходы же. для Excel есть либа EPPlus и она созадет файл локально и всякое непотребство с ним творит. для google sheets надо делать всякие batch request с совершенно другим апи.
Vasily
У тебя работа с формулами или просто с данными?
Vasiliy
ну тут просто вставить правильно данные, объединение столбцов, колонок и правильная закраска.
Vasiliy
слава богу формул нет
Vasily
Беги оттуда
Vasily
В общем, в райдере поддержка андроид какая-то странная. Я так пока и не смог запустить. В 19 студии все заводится с полпинка...
Vasily
Ебать, оно завелось
Vasily
Но это ппц
Vasily
Кароч
Vasily
@fvnever тут?
Dr. Friedrich
Да.
Vasily
Проблема с андроидом в том, что в настройках автоматом не подхватываются пути к NDK и jdk
Vasily
Вторым двум пунктам папочки приходится самостоятельно указывать
Vasily
Причем как ndk он у меня подхватывал jdk, что, походу, зашквар
Pavel
ктонить заводил ef core на f#?
Vladislav
Там миграции сишарп онли, поэтому не пытался
x
https://youtu.be/jsUvcjk8J5c
полное безумие
x
индусы после такого - просто нейтив спикеры
x
🙈
x
и сами новости да, достойные
Ayrat
ага, уровня - "В бобруйске прорвало общественный сортир, съёмка с места проишествия"
x
я только диктора в общем и понял
Ayrat
у диктора тоже акцент заметный, но понятный. У самого фермера вообще хз на чём он разговаривает
x
там есть титры!!
x
бля, я вообще короче не то думал что они говорят
Ayrat
Я там только про фарти файв уловил, дальше набор звуков
x
первые 7 секунд это просто в мемориз
x
походу титры тоже месиво какое-то
x
наверное автоматические
Крылатый
Вместо C++ там должен быть Жюль Верн
Только Циолковский, только хардкор.