#pragma once #include "yql_dispatch.h" #include #include #include #include #include namespace NYql { namespace NCommon { class TProviderConfigurationTransformer : public TSyncTransformerBase { public: TProviderConfigurationTransformer(TSettingDispatcher::TPtr dispatcher,const TTypeAnnotationContext& types, const TString& provider, const THashSet& configureCallables = {}); TStatus DoTransform(TExprNode::TPtr input, TExprNode::TPtr& output, TExprContext& ctx) final; void Rewind() final { } protected: virtual bool HandleAttr(TPositionHandle pos, const TString& cluster, const TString& name, const TMaybe& value, TExprContext& ctx); virtual bool HandleAuth(TPositionHandle pos, const TString& cluster, const TString& alias, TExprContext& ctx); protected: TSettingDispatcher::TPtr Dispatcher; const TTypeAnnotationContext& Types; TString Provider; THashSet ConfigureCallables; }; THolder CreateProviderConfigurationTransformer( TSettingDispatcher::TPtr dispatcher, const TTypeAnnotationContext& types, const TString& provider ); } // namespace NCommon } // namespace NYql