rust_data_processing.cdc
CDC boundary types mirroring rust_data_processing::cdc (no connector shipped in Phase 1a).
These are plain Python types for contracts and documentation; they are not produced by the native extension yet. See the Rust module for field semantics.
1"""CDC boundary types mirroring ``rust_data_processing::cdc`` (no connector shipped in Phase 1a). 2 3These are plain Python types for contracts and documentation; they are not produced by the 4native extension yet. See the Rust module for field semantics. 5""" 6 7from __future__ import annotations 8 9from dataclasses import dataclass, field 10from enum import Enum 11from typing import Any, Optional 12 13 14class CdcOp(Enum): 15 INSERT = "insert" 16 UPDATE = "update" 17 DELETE = "delete" 18 TRUNCATE = "truncate" 19 20 21@dataclass 22class TableRef: 23 name: str 24 schema: Optional[str] = None 25 26 @classmethod 27 def with_schema(cls, schema: str, name: str) -> TableRef: 28 return cls(name=name, schema=schema) 29 30 31@dataclass 32class CdcCheckpoint: 33 token: str 34 35 36@dataclass 37class SourceMeta: 38 source: Optional[str] = None 39 checkpoint: Optional[CdcCheckpoint] = None 40 41 42@dataclass 43class RowImage: 44 """Ordered (column_name, value) pairs.""" 45 46 values: list[tuple[str, Any]] = field(default_factory=list) 47 48 @classmethod 49 def new(cls, values: list[tuple[str, Any]]) -> RowImage: 50 return cls(values=values) 51 52 53@dataclass 54class CdcEvent: 55 meta: SourceMeta 56 table: TableRef 57 op: CdcOp 58 before: Optional[RowImage] = None 59 after: Optional[RowImage] = None 60 61 62__all__ = [ 63 "CdcCheckpoint", 64 "CdcEvent", 65 "CdcOp", 66 "RowImage", 67 "SourceMeta", 68 "TableRef", 69]
@dataclass
class
CdcCheckpoint:
@dataclass
class
CdcEvent:
54@dataclass 55class CdcEvent: 56 meta: SourceMeta 57 table: TableRef 58 op: CdcOp 59 before: Optional[RowImage] = None 60 after: Optional[RowImage] = None
CdcEvent( meta: SourceMeta, table: TableRef, op: CdcOp, before: Optional[RowImage] = None, after: Optional[RowImage] = None)
meta: SourceMeta
table: TableRef
op: CdcOp
class
CdcOp(enum.Enum):
15class CdcOp(Enum): 16 INSERT = "insert" 17 UPDATE = "update" 18 DELETE = "delete" 19 TRUNCATE = "truncate"
INSERT =
<CdcOp.INSERT: 'insert'>
UPDATE =
<CdcOp.UPDATE: 'update'>
DELETE =
<CdcOp.DELETE: 'delete'>
TRUNCATE =
<CdcOp.TRUNCATE: 'truncate'>
@dataclass
class
RowImage:
43@dataclass 44class RowImage: 45 """Ordered (column_name, value) pairs.""" 46 47 values: list[tuple[str, Any]] = field(default_factory=list) 48 49 @classmethod 50 def new(cls, values: list[tuple[str, Any]]) -> RowImage: 51 return cls(values=values)
Ordered (column_name, value) pairs.
@dataclass
class
SourceMeta:
37@dataclass 38class SourceMeta: 39 source: Optional[str] = None 40 checkpoint: Optional[CdcCheckpoint] = None
SourceMeta( source: Optional[str] = None, checkpoint: Optional[CdcCheckpoint] = None)
@dataclass
class
TableRef: