@@ -2,8 +2,8 @@ package io.github.datacatering.datacaterer.api
22
33import com .softwaremill .quicklens .ModifyPimp
44import io .github .datacatering .datacaterer .api .converter .Converters .toScalaMap
5- import io .github .datacatering .datacaterer .api .model .Constants .{CONFLUENT_SCHEMA_REGISTRY_ID , CONFLUENT_SCHEMA_REGISTRY_SUBJECT , CONFLUENT_SCHEMA_REGISTRY_VERSION , DATA_CONTRACT_FILE , DATA_CONTRACT_SCHEMA , GREAT_EXPECTATIONS_FILE , JSON_SCHEMA_FILE , METADATA_SOURCE_URL , OPEN_LINEAGE_DATASET , OPEN_LINEAGE_NAMESPACE , OPEN_METADATA_API_VERSION , OPEN_METADATA_AUTH_TYPE , OPEN_METADATA_AUTH_TYPE_OPEN_METADATA , OPEN_METADATA_DEFAULT_API_VERSION , OPEN_METADATA_HOST , OPEN_METADATA_JWT_TOKEN , SCHEMA_LOCATION }
6- import io .github .datacatering .datacaterer .api .model .{ConfluentSchemaRegistrySource , DataContractCliSource , GreatExpectationsSource , JsonSchemaSource , MarquezMetadataSource , MetadataSource , OpenAPISource , OpenDataContractStandardSource , OpenMetadataSource }
5+ import io .github .datacatering .datacaterer .api .model .Constants .{CONFLUENT_SCHEMA_REGISTRY_ID , CONFLUENT_SCHEMA_REGISTRY_SUBJECT , CONFLUENT_SCHEMA_REGISTRY_VERSION , DATA_CONTRACT_FILE , DATA_CONTRACT_SCHEMA , GREAT_EXPECTATIONS_FILE , JSON_SCHEMA_FILE , METADATA_SOURCE_URL , OPEN_LINEAGE_DATASET , OPEN_LINEAGE_NAMESPACE , OPEN_METADATA_API_VERSION , OPEN_METADATA_AUTH_TYPE , OPEN_METADATA_AUTH_TYPE_OPEN_METADATA , OPEN_METADATA_DEFAULT_API_VERSION , OPEN_METADATA_HOST , OPEN_METADATA_JWT_TOKEN , SCHEMA_LOCATION , YAML_PLAN_FILE , YAML_STEP_NAME , YAML_TASK_FILE , YAML_TASK_NAME }
6+ import io .github .datacatering .datacaterer .api .model .{ConfluentSchemaRegistrySource , DataContractCliSource , GreatExpectationsSource , JsonSchemaSource , MarquezMetadataSource , MetadataSource , OpenAPISource , OpenDataContractStandardSource , OpenMetadataSource , YamlPlanSource , YamlTaskSource }
77
88case class MetadataSourceBuilder (metadataSource : MetadataSource = MarquezMetadataSource ()) {
99 def this () = this (MarquezMetadataSource ())
@@ -138,4 +138,56 @@ case class MetadataSourceBuilder(metadataSource: MetadataSource = MarquezMetadat
138138
139139 def jsonSchemaJava (schemaFile : String , options : java.util.Map [String , String ]): MetadataSourceBuilder =
140140 jsonSchema(schemaFile, toScalaMap(options))
141+
142+ /**
143+ * Create metadata source from YAML plan file. This allows referencing existing YAML plan files
144+ * and optionally override configurations using the builder pattern.
145+ *
146+ * @param planFile Path to the YAML plan file
147+ * @return MetadataSourceBuilder with YamlPlanSource
148+ */
149+ def yamlPlan (planFile : String ): MetadataSourceBuilder = {
150+ this .modify(_.metadataSource).setTo(YamlPlanSource (Map (YAML_PLAN_FILE -> planFile)))
151+ }
152+
153+ /**
154+ * Create metadata source from YAML task file. This allows referencing existing YAML task files
155+ * and optionally override configurations using the builder pattern.
156+ *
157+ * @param taskFile Path to the YAML task file
158+ * @return MetadataSourceBuilder with YamlTaskSource
159+ */
160+ def yamlTask (taskFile : String ): MetadataSourceBuilder = {
161+ this .modify(_.metadataSource).setTo(YamlTaskSource (Map (YAML_TASK_FILE -> taskFile)))
162+ }
163+
164+ /**
165+ * Create metadata source from YAML task file with specific task name filter.
166+ *
167+ * @param taskFile Path to the YAML task file
168+ * @param taskName Name of the specific task to use from the YAML file
169+ * @return MetadataSourceBuilder with YamlTaskSource
170+ */
171+ def yamlTask (taskFile : String , taskName : String ): MetadataSourceBuilder = {
172+ this .modify(_.metadataSource).setTo(YamlTaskSource (Map (
173+ YAML_TASK_FILE -> taskFile,
174+ YAML_TASK_NAME -> taskName
175+ )))
176+ }
177+
178+ /**
179+ * Create metadata source from YAML task file with specific task and step name filters.
180+ *
181+ * @param taskFile Path to the YAML task file
182+ * @param taskName Name of the specific task to use from the YAML file
183+ * @param stepName Name of the specific step to use from the task
184+ * @return MetadataSourceBuilder with YamlTaskSource
185+ */
186+ def yamlTask (taskFile : String , taskName : String , stepName : String ): MetadataSourceBuilder = {
187+ this .modify(_.metadataSource).setTo(YamlTaskSource (Map (
188+ YAML_TASK_FILE -> taskFile,
189+ YAML_TASK_NAME -> taskName,
190+ YAML_STEP_NAME -> stepName
191+ )))
192+ }
141193}
0 commit comments