"""
Dataclass models for type-safe DuckDB storage operations.
This module provides dataclass-based models for Sparkless's storage layer,
ensuring type safety for all database operations.
"""
from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional
from datetime import datetime, timezone
from enum import Enum
[docs]
class StorageMode(str, Enum):
"""Storage operation modes with type safety."""
APPEND = "append"
OVERWRITE = "overwrite"
IGNORE = "ignore"
[docs]
@dataclass
class MockDeltaVersion:
"""Represents a single version of a Delta table for time travel."""
version: int
timestamp: datetime
operation: str # "WRITE", "APPEND", "OVERWRITE", "MERGE", etc.
data_snapshot: List[Dict[str, Any]] # Snapshot of data at this version
[docs]
@dataclass
class ColumnDefinition:
"""Type-safe column definition model for DuckDB tables."""
column_name: str
column_type: str
table_id: Optional[int] = None
id: Optional[int] = None
is_nullable: bool = True
is_primary_key: bool = False
default_value: Optional[str] = None
column_order: int = 0
[docs]
@dataclass
class DuckDBTableModel:
"""Base model for DuckDB table operations with type safety."""
table_name: str
schema_name: str = "default"
[docs]
def get_full_name(self) -> str:
"""Get fully qualified table name."""
return (
f"{self.schema_name}.{self.table_name}"
if self.schema_name != "default"
else self.table_name
)
[docs]
@dataclass
class DuckDBConnectionConfig:
"""Type-safe configuration for DuckDB connections."""
database_path: str = "sparkless.duckdb"
read_only: bool = False
memory_limit: Optional[str] = None
thread_count: Optional[int] = None
enable_extensions: bool = True
[docs]
@dataclass
class StorageOperationResult:
"""Type-safe result model for storage operations."""
success: bool
rows_affected: int
operation_type: str
table_name: str
error_message: Optional[str] = None
execution_time_ms: Optional[float] = None
[docs]
@dataclass
class QueryResult:
"""Type-safe model for query results."""
data: List[Dict[str, Any]]
row_count: int
column_count: int
query: str
execution_time_ms: Optional[float] = None