Size: a a a

2019 June 12

RI

Ruslan Ibragimov in Kotlin JVM
Roman Khlebnov
Всем дратуте! У меня такой вопрос: как сделать пайплайн в Ktor, который стартует с routing.post и делает последовательность действий? Что-то типа:

val bestPipelineEVER = Pipeline(routing.post, shitTonOfPhases)

fun Route.smth() {
   bestPipelineEVER
}
Что подразумевается под пайплайном? То что внутри ktor или просто имя совпало?
источник

BV

Boris Vanin in Kotlin JVM
Roman Khlebnov
Всем дратуте! У меня такой вопрос: как сделать пайплайн в Ktor, который стартует с routing.post и делает последовательность действий? Что-то типа:

val bestPipelineEVER = Pipeline(routing.post, shitTonOfPhases)

fun Route.smth() {
   bestPipelineEVER
}
Не совсем понятно, стандартный дсл чем не подходит?
источник

BV

Boris Vanin in Kotlin JVM
Кусок дсл-а всегда можно вынести в экстеншн, ну или почти всегда
источник

BV

Boris Vanin in Kotlin JVM
Pipeline - Advanced - Ktor
https://ktor.io/advanced/pipeline.html
источник

RK

Roman Khlebnov in Kotlin JVM
1. Я пайплайном назвал последовательность действий, сижу курю доки Ktor, получается что-то похожее на пайплайны Ktor.
2. Хочу запилить под себя небольшой кастомный DSL Ktor-style, понравился концепт такого описания вещей, но не особо понятно как ребята так хитро с extension методами работают
источник

RK

Roman Khlebnov in Kotlin JVM
Да, читаю именно эту страницу :)
источник

BV

Boris Vanin in Kotlin JVM
Если хочется именно пайплайн, то вот ссылочка
источник

RK

Roman Khlebnov in Kotlin JVM
Я думал что мне нужно смотреть в сорцы Route в качестве примера описания того, что мне нужно
источник

BV

Boris Vanin in Kotlin JVM
Roman Khlebnov
1. Я пайплайном назвал последовательность действий, сижу курю доки Ktor, получается что-то похожее на пайплайны Ktor.
2. Хочу запилить под себя небольшой кастомный DSL Ktor-style, понравился концепт такого описания вещей, но не особо понятно как ребята так хитро с extension методами работают
Думаю, лучше описать решаемую проблему
источник

BV

Boris Vanin in Kotlin JVM
Потому что такое описание не даёт никакой конкретики
источник

RK

Roman Khlebnov in Kotlin JVM
Проблема: нужно сделать подобие Event Sourcing - получить POST реквест, редирекнуть реквест хэндлеру, провалидировать и эмитнуть ивент по окончанию
источник

BV

Boris Vanin in Kotlin JVM
Roman Khlebnov
Проблема: нужно сделать подобие Event Sourcing - получить POST реквест, редирекнуть реквест хэндлеру, провалидировать и эмитнуть ивент по окончанию
Т.е. обычный для ктор-а флоу
источник

RK

Roman Khlebnov in Kotlin JVM
Наверное, тут я новичок :)
источник

BV

Boris Vanin in Kotlin JVM
И что не получается? покажи код на обычном дсл-е, который тебе не нравится
источник

RK

Roman Khlebnov in Kotlin JVM
Да не то чтобы не получается, примеров нет особо как это сделать
источник

BV

Boris Vanin in Kotlin JVM
Samples - Samples - Ktor
https://ktor.io/samples/index.html
источник

BV

Boris Vanin in Kotlin JVM
Много примеров
источник

RK

Roman Khlebnov in Kotlin JVM
Ладненько, пойду курить мануалы, спасибо :)
источник

BV

Boris Vanin in Kotlin JVM
Возможно я не совсем понял, что ты ищешь, описание очень общее
источник

RI

Ruslan Ibragimov in Kotlin JVM
Roman Khlebnov
Проблема: нужно сделать подобие Event Sourcing - получить POST реквест, редирекнуть реквест хэндлеру, провалидировать и эмитнуть ивент по окончанию
Короче хочется чтобы визуально было как пайплайн, то что впринципе делается тремя строчками кода с корутинами)

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


пример
routing {
 post("/route") {
   // validate
   // handle
   // emit
 }
}
источник