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:
32@dataclass
33class CdcCheckpoint:
34    token: str
CdcCheckpoint(token: str)
token: str
@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
before: Optional[RowImage] = None
after: Optional[RowImage] = None
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.

RowImage(values: list[tuple[str, typing.Any]] = <factory>)
values: list[tuple[str, typing.Any]]
@classmethod
def new( cls, values: list[tuple[str, typing.Any]]) -> RowImage:
49    @classmethod
50    def new(cls, values: list[tuple[str, Any]]) -> RowImage:
51        return cls(values=values)
@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)
source: Optional[str] = None
checkpoint: Optional[CdcCheckpoint] = None
@dataclass
class TableRef:
22@dataclass
23class TableRef:
24    name: str
25    schema: Optional[str] = None
26
27    @classmethod
28    def with_schema(cls, schema: str, name: str) -> TableRef:
29        return cls(name=name, schema=schema)
TableRef(name: str, schema: Optional[str] = None)
name: str
schema: Optional[str] = None
@classmethod
def with_schema(cls, schema: str, name: str) -> TableRef:
27    @classmethod
28    def with_schema(cls, schema: str, name: str) -> TableRef:
29        return cls(name=name, schema=schema)