209ba45477
Removes the deprecated `workflow_template` concept entirely across both backend API routers, internal logic handling within the `supervisory_node` and `consciousness_node`, and front-end components. Enables `consciousness_node` to work autonomously. Also refactors core package structure to enforce the "one python package, one Ray Actor" architectural rule. `GlobalWorkflowManager`, `WorkflowRunningEngine`, `PostgresDatabase`, and `WorkerCluster` have been moved to their own top-level decoupled package directories with properly exported `__init__.py` modules. Test suites have been relocated and import paths updated across the system. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: zhaoxi826 <198742034+zhaoxi826@users.noreply.github.com>
47 lines
2.0 KiB
Python
47 lines
2.0 KiB
Python
from sqlmodel import select
|
|
from typing import List, Optional
|
|
from pretor.core.database.table.event import EventRecord
|
|
from sqlalchemy.ext.asyncio import async_sessionmaker, AsyncSession
|
|
|
|
|
|
class EventDatabase:
|
|
def __init__(self, async_session_maker: async_sessionmaker[AsyncSession]):
|
|
self.async_session_maker = async_session_maker
|
|
|
|
async def upsert_event(self, trace_id: str, event_data_json: str) -> EventRecord:
|
|
async with self.async_session_maker() as session:
|
|
statement = select(EventRecord).where(EventRecord.trace_id == trace_id)
|
|
results = await session.execute(statement)
|
|
record = results.scalar_one_or_none()
|
|
if record:
|
|
record.event_data_json = event_data_json
|
|
else:
|
|
record = EventRecord(trace_id=trace_id, event_data_json=event_data_json)
|
|
session.add(record)
|
|
await session.commit()
|
|
await session.refresh(record)
|
|
return record
|
|
|
|
async def get_event(self, trace_id: str) -> Optional[EventRecord]:
|
|
async with self.async_session_maker() as session:
|
|
statement = select(EventRecord).where(EventRecord.trace_id == trace_id)
|
|
results = await session.execute(statement)
|
|
return results.scalar_one_or_none()
|
|
|
|
async def get_all_events(self) -> List[EventRecord]:
|
|
async with self.async_session_maker() as session:
|
|
statement = select(EventRecord)
|
|
results = await session.execute(statement)
|
|
return results.scalars().all()
|
|
|
|
async def delete_event(self, trace_id: str) -> bool:
|
|
async with self.async_session_maker() as session:
|
|
statement = select(EventRecord).where(EventRecord.trace_id == trace_id)
|
|
results = await session.execute(statement)
|
|
record = results.scalar_one_or_none()
|
|
if record:
|
|
await session.delete(record)
|
|
await session.commit()
|
|
return True
|
|
return False
|