Size: a a a

2020 December 30

p

polunin.ai in rust_offtopic
Ты такое хочешь?
источник

D

Dima in rust_offtopic
А кстати поправьте меня если я не прав, ведь вывод в стдоут всегда в мютекс берется внутри
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
polunin.ai
Ну то что ты хочешь это разрешимо, но вопрос в человеческом апи
идея в том, чтобы у меня был хедлер fn my_handler() в котором или аргуенты напрямую записываются, или как часть структурки.

теперь нужно каким угодно образом его обернуть чтобы он стал совместим с web::get::to(...)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
смысл в том чтобы функция-оборачивания была одна (или макросом) и любые хендлеры делала совместимыми с актиксом
источник

p

polunin.ai in rust_offtopic
Ну мне кажется без мре я тебя не пойму
источник

p

polunin.ai in rust_offtopic
Если сможешь сделать то пингани
источник

D

Dima in rust_offtopic
А, я читать разучился, соррян)
источник

D

Dima in rust_offtopic
Но в свое оправдание могу сказать что тот подход что я предложил оправдывает себя, а логгируем мы прям очень дофига
источник

p

polunin.ai in rust_offtopic
Αλεχ Zhukovsky
@DogeShibu ну по идее можно как-то так разделить

pub async fn put_current_company_custom_settings(
   req: HttpRequest,
   company_settings_service: web::Data<CompanySettingsService>,
   uri_params: web::Path<(Uuid,)>,
   body: web::Json<CustomSettingsUpdate>,
) -> HttpResponse {
   let extensions = req.extensions();
   let payload = RequestPayload {
       user_model: extensions.get().unwrap(),
       company_settings_service: &company_settings_service,
       custom_settigns_provider: extensions.get().unwrap(),
       company_id: uri_params.0,
       new: body.0
   };
   put_current_company_custom_settings_impl(
payload
   ).await
}

pub struct RequestPayload<'a> {
   user_model: &'a UserModel,
   company_settings_service: &'a CompanySettingsService,
   custom_settigns_provider: &'a CustomSettingsMerger,
   company_id: Uuid,
   new: CustomSettingsUpdate,
}

pub async fn put_current_company_custom_settings_impl(
   request_payload: RequestPayload<'_>,
) -> HttpResponse {

И
метод-обертку со структуркой генерить макросом. Как по-другому сделать яхз
Я не понял а нахера ты информацию из реквеста и депенденси в одну структуру ложишь
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
polunin.ai
Я не понял а нахера ты информацию из реквеста и депенденси в одну структуру ложишь
мне показалось что структуру проще сгенерировать чем вызов функи с неизвестным числом аргументов
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
polunin.ai
Ну мне кажется без мре я тебя не пойму
fn handler(a: DepA, b: depB) -> HttpResponse

Как её зарегать не меняя сигнатуры в актиксе чтобы он её вызывал? Предполагается что DepA и DepB лежат в req.extensions()

Вместо DepA может быть какой-нибудь ньютайп MyCoolStruct<DepA>, не суть
источник

p

polunin.ai in rust_offtopic
Хз я видимо не понял сути проблемы. Давай с начала.
1. У тебя есть несколько депенденси которые зависят от данных в реквесте.
2. У тебя есть хендлер который принимает на вход данные экстраченные из реквеста + депенденси.
3. Ты хочешь сделать так чтобы депенденси сами резолвились и сами брали нужные данные из реквеста с минимальным бойлерплейтом.
Так?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
polunin.ai
Хз я видимо не понял сути проблемы. Давай с начала.
1. У тебя есть несколько депенденси которые зависят от данных в реквесте.
2. У тебя есть хендлер который принимает на вход данные экстраченные из реквеста + депенденси.
3. Ты хочешь сделать так чтобы депенденси сами резолвились и сами брали нужные данные из реквеста с минимальным бойлерплейтом.
Так?
по сути задача щас проще: известно что все зависимости уже зареганы или через data(...) или через req.extensions. Всё что нужно сделать - пункт 3, чтобы хендлер который ничего не знает про req мог из него разрезолвить нужные сервисы
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
точнее нужна прослойка-адаптер, которая на вход принимает req, а на выходе умеет вызывать хендлер и передавать ему всё что ему нужно
источник

p

polunin.ai in rust_offtopic
А ну это я для своего диая прикручу но писать макросы для extensions не буду🤷‍♀
источник

p

polunin.ai in rust_offtopic
Тут ты что-то такое навелосипедил что я не понимаю что это
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
да ничего
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
я уже умею на основе данных запроса регать скоупед зависимости
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
вопрос как превратить сервис-локатор (которым щас служит req) в нормальный DI
источник

p

polunin.ai in rust_offtopic
Взять мою либу☺️
источник