Class: DataDrain::Storage::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/data_drain/storage/base.rb

Overview

This class is abstract.

Interfaz abstracta para los adaptadores de almacenamiento de DataDrain. Define los métodos obligatorios que cada proveedor (Local, S3, etc.) debe implementar para interactuar con DuckDB y el sistema de archivos.

Direct Known Subclasses

Local, S3

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Base

Inicializa el adaptador con la configuración proveída.

Parameters:



17
18
19
# File 'lib/data_drain/storage/base.rb', line 17

def initialize(config)
  @config = config
end

Instance Attribute Details

#configDataDrain::Configuration (readonly)

Returns Configuración actual del framework.

Returns:



12
13
14
# File 'lib/data_drain/storage/base.rb', line 12

def config
  @config
end

Instance Method Details

#build_path(bucket, folder_name, partition_path) ⇒ String

Construye la ruta de lectura compatible con la función read_parquet de DuckDB.

Parameters:

  • bucket (String)

    nombre del bucket tanto local o de S3.

  • folder_name (String)

    Carpeta de la tabla (ej. ‘versions’).

  • partition_path (String, nil)

    Ruta parcial de particiones (ej. ‘year=2026/month=3’).

Returns:

  • (String)

    Ruta completa con comodines (ej. ‘…/*/.parquet’).

Raises:

  • (NotImplementedError)


43
44
45
# File 'lib/data_drain/storage/base.rb', line 43

def build_path(bucket, folder_name, partition_path)
  raise NotImplementedError, "#{self.class} debe implementar #build_path"
end

#destroy_partitions(bucket, folder_name, partition_keys, partitions) ⇒ Integer

Elimina físicamente las particiones que coincidan con los criterios.

Parameters:

  • bucket (String)

    nombre del bucket tanto local o de S3.

  • folder_name (String)

    Carpeta de la tabla.

  • partition_keys (Array<Symbol>)

    Claves de partición esperadas.

  • partitions (Hash)

    Valores de las particiones a eliminar (puede contener nulos).

Returns:

  • (Integer)

    Cantidad de particiones o archivos eliminados.

Raises:

  • (NotImplementedError)


54
55
56
# File 'lib/data_drain/storage/base.rb', line 54

def destroy_partitions(bucket, folder_name, partition_keys, partitions)
  raise NotImplementedError, "#{self.class} debe implementar #destroy_partitions"
end

#prepare_export_path(bucket, folder_name) ⇒ Object

Prepara el directorio destino antes de una exportación (ej. crear carpetas).

Parameters:

  • bucket (String)

    nombre del bucket tanto local o de S3.

  • folder_name (String)

    Nombre de la carpeta principal de la tabla.



33
34
35
# File 'lib/data_drain/storage/base.rb', line 33

def prepare_export_path(bucket, folder_name)
  # Operación nula por defecto. Las subclases pueden sobreescribirlo.
end

#setup_duckdb(connection) ⇒ Object

Configura las extensiones y credenciales necesarias en la conexión de DuckDB.

Parameters:

  • connection (DuckDB::Connection)

    Conexión activa a DuckDB.

Raises:

  • (NotImplementedError)

    Si la subclase no lo implementa.



25
26
27
# File 'lib/data_drain/storage/base.rb', line 25

def setup_duckdb(connection)
  raise NotImplementedError, "#{self.class} debe implementar #setup_duckdb"
end