У меня есть следующий простой конвейер:
extractor := http.NewAPIReader(apiCfg,
queries.GetUserModelsFromAPI, runWindow.From, runWindow.To)
transformer :=
transform.NewUserModelTransform(runWindow.To)
load := sql.NewWriter(db, "user")
layout, _ := ratchet.NewPipelineLayout(
ratchet.NewPipelineStage(
ratchet.Do(extractor).Outputs(transformer),
),
ratchet.NewPipelineStage(
ratchet.Do(transformer).Outputs(load),
),
ratchet.NewPipelineStage(
ratchet.Do(load),
),
)
pipeline := ratchet.NewBranchingPipeline(layout)
pipeline.Name = "User Model ETL Pipeline"
return pipeline
Проблема, с которой я столкнулся здесь, заключается в том, что с помощью храповика вы создаете свои преобразования как типы, а затем создаете их и вызываете их по мере необходимости.Я хочу сделать это для многих типов, и почти каждая строка выше будет дублирована.
Я думал о том, чтобы мои конвейеры создавали извлечение, преобразование и загрузку, а затем передавали их функции, котораязапустил блок макета ... но проблема в том, что когда вы хотите передать преобразование, преобразования явно не являются общими ... поэтому я попадаю в ловушку неспособности обобщить его.Мне здесь не хватает жизненно важных знаний, и если кто-нибудь сможет помочь, это было бы здорово.