Class: DataDrain::Engine
- Inherits:
-
Object
- Object
- DataDrain::Engine
- Includes:
- Observability, Observability::Timing
- Defined in:
- lib/data_drain/engine.rb
Overview
Motor principal de extracción y purga de datos (DataDrain).
Orquesta el flujo ETL desde PostgreSQL hacia un Data Lake analítico delegando la interacción del almacenamiento al adaptador configurado.
Instance Method Summary collapse
-
#call ⇒ Boolean
True si el flujo completó exitosamente, false si falló.
-
#initialize(options) ⇒ Engine
constructor
Inicializa una nueva instancia del motor de extracción.
Constructor Details
#initialize(options) ⇒ Engine
Inicializa una nueva instancia del motor de extracción.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/data_drain/engine.rb', line 27 def initialize() @start_date = .fetch(:start_date).beginning_of_day @end_date = .fetch(:end_date).to_date.next_day.beginning_of_day @table_name = .fetch(:table_name) Validations.validate_identifier!(:table_name, @table_name) @folder_name = .fetch(:folder_name, @table_name) @select_sql = .fetch(:select_sql, "*") @partition_keys = .fetch(:partition_keys) @primary_key = .fetch(:primary_key, "id") Validations.validate_identifier!(:primary_key, @primary_key) @where_clause = [:where_clause] @bucket = [:bucket] @skip_export = .fetch(:skip_export, false) @config = DataDrain.configuration @config.validate_for_engine! @logger = @config.logger @adapter = DataDrain::Storage.adapter database = DuckDB::Database.open(":memory:") @duckdb = database.connect end |
Instance Method Details
#call ⇒ Boolean
Returns true si el flujo completó exitosamente, false si falló.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/data_drain/engine.rb', line 54 def call @durations = {} start_time = monotonic log_start setup_duckdb return skip_empty(start_time) if step_count.zero? if @skip_export safe_log(:info, "engine.skip_export", { table: @table_name }) else step_export end return integrity_failed(start_time) unless step_verify step_purge log_complete(start_time) true end |