created simple engine but still needs to be get better

This commit is contained in:
2026-08-17 12:38:56 +03:30
parent d94840c8c7
commit b8449a6ff3
6 changed files with 51 additions and 5 deletions
+46
View File
@@ -0,0 +1,46 @@
from engine.types.operation import Operation
class SyncEngine:
def __init__(self):
pass
def sync(
self, cursor: int, operations: list[Operation]
) -> tuple[int, list[Operation]]:
"""Sync the local database with the server's database.
Args:
cursor (int): The cursor of the last operation that was applied to the local database.
operations (list[Operation]): The list of operations that were performed on the local database since the last sync.
Returns:
tuple[int, list[Operation]]: A tuple containing the new cursor and the list of operations that need to be applied to the local database.
"""
# For now, just return the same cursor and an empty list of operations.
new_operations = self.get_operations_after_cursor(cursor)
if len(operations) > 0:
self.apply_operations(operations)
return cursor + len(new_operations), new_operations
def apply_operations(self, operations: list[Operation]) -> None:
"""Apply the given operations to the local database.
Args:
operations (list[Operation]): The list of operations to apply to the local database.
"""
# For now, just print the operations.
for operation in operations:
print("APPLYING OPERATION:", operation.model_dump(), flush=True)
def get_operations_after_cursor(self, cursor: int) -> list[Operation]:
"""Get the list of operations that were performed on the server's database after the given cursor.
Args:
cursor (int): The cursor of the last operation that was applied to the local database.
Returns:
list[Operation]: The list of operations that were performed on the server's database after the given cursor.
"""
# For now, just return an empty list of operations.
return []
+1 -1
View File
@@ -1,7 +1,7 @@
import asyncio import asyncio
import time import time
from .types.operation import Operation from engine.types.operation import Operation
from .types.sync_request import SyncRequest from .types.sync_request import SyncRequest
from .types.sync_response import SyncResponse from .types.sync_response import SyncResponse
+2 -2
View File
@@ -1,6 +1,6 @@
from pydantic import BaseModel from pydantic import BaseModel
from .operation import Operation from engine.types.operation import Operation
class SyncRequest(BaseModel): class SyncRequest(BaseModel):
@@ -15,4 +15,4 @@ class SyncRequest(BaseModel):
@classmethod @classmethod
def decode(cls, data: bytes): def decode(cls, data: bytes):
return cls.model_validate_json(data) return cls.model_validate_json(data)
+2 -2
View File
@@ -1,7 +1,7 @@
from pydantic import BaseModel from pydantic import BaseModel
from .operation import Operation from engine.types.operation import Operation
from .snapshot import Snapshot from engine.types.snapshot import Snapshot
class SyncResponse(BaseModel): class SyncResponse(BaseModel):