Supported MySQL Changes Listening

This commit is contained in:
2025-03-09 00:12:28 +03:00
parent 41d98aafe9
commit 77b23eaad2
9 changed files with 304 additions and 49 deletions

View File

@@ -2,7 +2,13 @@ import re
from typing import Union, List, Optional, Literal, Any
from typing_extensions import Annotated
from pydantic import BaseModel, Field, field_validator, ValidationInfo, UUID4
from core.enums import ConnectionTypes, UserRole, FilterOperator, SortOrder
from core.enums import (
ConnectionTypes,
UserRole,
FilterOperator,
SortOrder,
DBUpdatesActions,
)
from core.exceptions import QueryValidationError
@@ -189,6 +195,7 @@ class CachedCursorOut(BaseModel):
has_more: bool
close_at: int
ttl: int
class Config:
from_attributes = True
@@ -196,3 +203,25 @@ class CachedCursorOut(BaseModel):
class SelectResult(BaseModel):
cursor: CachedCursorOut
results: SelectResultData | None
class ConnectionChangeBase(BaseModel):
connection_id: int
action: DBUpdatesActions
table: str
class ConnectionChangeInsert(ConnectionChangeBase):
action: DBUpdatesActions = DBUpdatesActions.insert
values: list[Any]
class ConnectionChangeDelete(ConnectionChangeBase):
action: DBUpdatesActions = DBUpdatesActions.delete
values: list[Any]
class ConnectionChangeUpdate(ConnectionChangeBase):
action: DBUpdatesActions = DBUpdatesActions.update
before_values: list[Any]
after_values: list[Any]