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>>.
отсос
Nikolay
Dr. Friedrich
С каких пор Expression.Compile() начал работать в произвольном провайдере?
Dr. Friedrich
Я бы твою задачу решал, сгенерив свой собственный экспрешен. Должно быть макси просто
Vasily
Мазохизма много, толка мало
Dr. Friedrich
Смотри, у тебя уже есть Expression.Lambda с Body и Arguments
Dr. Friedrich
Надо просто из неё сконструировать новую лямбду с другими типопараметрами.
Dr. Friedrich
Даже боди не надо менять вообще имхо
Dr. Friedrich
Хотя надо будет попробовать, конечно, мало ли вдруг надо экспрешен на апкаст самому заэмитить.
Ayrat
Я бы тоже экспрешн пересобрал
Dr. Friedrich
Но это прям ваще просто
Dr. Friedrich
Как два байта обасвальт
Ayrat
Звучит как изи
Nikolay
С ним гораздо удобнее работать, чем с всякими рест апи, ибо гораздо лучше стандартизирован, и просто не даст тебе сделать не правильно.
Nikolay
Да и в том же рест апи, иногда у тебя параметры передаются в боди, а иногда в урле, что это за бред вообще. А когда у тебя куча параметров, например фильтры, у тебя получается очень стрёмный и нечитаемый урл.
Dr. Friedrich
Я вот так и не понял, как запросы из graphql транслировать в SQL
Dr. Friedrich
Кажется, это супер больно
Dr. Friedrich
Ну если пытаться как-то сразу общий случай охватить.
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
Hog
Vasily
Гриша ужрался,походу
Vladislav
@omgszer так и есть?
Vladislav
Ща на аглеском учились понимать айриш акцент
Vladislav
Ебать они сверлят канешн
Vladislav
Нихуя не понятно
Vasiliy
Народ, а кому нибудь приходилось находить разницу между отображение Excel и Google sheets и программно генерировать Google Sheets?
Vasily
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
x
индусы после такого - просто нейтив спикеры
Ayrat
x
🙈
x
и сами новости да, достойные
Ayrat
ага, уровня - "В бобруйске прорвало общественный сортир, съёмка с места проишествия"
x
я только диктора в общем и понял
Ayrat
у диктора тоже акцент заметный, но понятный. У самого фермера вообще хз на чём он разговаривает
x
там есть титры!!
x
бля, я вообще короче не то думал что они говорят
Ayrat
Я там только про фарти файв уловил, дальше набор звуков
x
первые 7 секунд это просто в мемориз
x
походу титры тоже месиво какое-то
x
наверное автоматические