from pathlib import Path from datetime import datetime from chongming_worker import auto_bind_models from chongming_worker.runtime import create_workers as _create_workers from chongming_password import hash_password from .router import * auto_bind_models("auth") async def create_workers(session, config, count=1, worker_manager=None): from chongming_database import Database from .global_var import set_global_var from .models.auth import Users from sqlalchemy import select db_path = Path(config.get("data_dir", "./data")) / "auth.db" db = Database(db_path) await db.initialize() # 初始化管理员 async with db.get_session() as sess: select_stmt = select(Users) \ .where(Users.username == "admin") # type: ignore result = await sess.execute(select_stmt) user: Users | None = result.scalar_one_or_none() if user is None: user = Users( username="admin", hashed_password=hash_password("admin"), email="admin@example.com", created_at=datetime.now(), updated_at=datetime.now(), is_superuser=True ) sess.add(user) await sess.commit() set_global_var("db", db) return _create_workers(session, config, count, worker_manager) async def cleanup(worker_item: str): from .global_var import db if db is not None: await db.dispose() print(f"{worker_item} 清理完毕")