mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-05-20 23:21:06 +00:00
feat(storage): add storage package base
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import os
|
||||
from pathlib import Path
|
||||
from types import SimpleNamespace
|
||||
from uuid import uuid4
|
||||
|
||||
os.environ.setdefault("DEER_FLOW_CONFIG_PATH", str(Path(__file__).resolve().parents[2] / "config.example.yaml"))
|
||||
|
||||
from sqlalchemy import inspect
|
||||
from store.persistence import create_persistence_from_database_config
|
||||
from store.repositories import UserCreate, build_user_repository
|
||||
|
||||
|
||||
def test_sqlite_persistence_from_database_config_creates_storage_tables(tmp_path):
|
||||
async def run() -> None:
|
||||
persistence = await create_persistence_from_database_config(
|
||||
SimpleNamespace(
|
||||
backend="sqlite",
|
||||
sqlite_dir=str(tmp_path),
|
||||
echo_sql=False,
|
||||
pool_size=5,
|
||||
)
|
||||
)
|
||||
assert persistence is not None
|
||||
try:
|
||||
await persistence.setup()
|
||||
|
||||
async with persistence.engine.connect() as conn:
|
||||
tables = await conn.run_sync(lambda sync_conn: set(inspect(sync_conn).get_table_names()))
|
||||
|
||||
assert {
|
||||
"users",
|
||||
"runs",
|
||||
"run_events",
|
||||
"threads_meta",
|
||||
"feedback",
|
||||
}.issubset(tables)
|
||||
|
||||
async with persistence.session_factory() as session:
|
||||
repo = build_user_repository(session)
|
||||
user = await repo.create_user(
|
||||
UserCreate(
|
||||
id=str(uuid4()),
|
||||
email="storage-user@example.com",
|
||||
password_hash="hash",
|
||||
)
|
||||
)
|
||||
await session.commit()
|
||||
|
||||
async with persistence.session_factory() as session:
|
||||
repo = build_user_repository(session)
|
||||
assert await repo.get_user_by_id(user.id) == user
|
||||
finally:
|
||||
await persistence.aclose()
|
||||
|
||||
asyncio.run(run())
|
||||
Reference in New Issue
Block a user