Files
chongming-plugins/example/router/count.py
T
2026-07-21 15:43:39 +08:00

34 lines
1.1 KiB
Python

import modelvault
from chongming_worker import rpc_method
from ..models.pydantic import CountGetResponse
from ..models.counter import Counter
@rpc_method(
subject="example.count",
method="GET",
summary="Increment and get counter value",
response_model=CountGetResponse, # 需要定义 CountResponse
)
async def count_get() -> CountGetResponse:
from ..global_var import db
# 确保数据库已初始化(如果未初始化,则同步初始化,但这里假设已就绪)
if db is None:
raise RuntimeError("Database not initialized")
counters = modelvault.models.async_collection(db, Counter) # type: ignore
async with db.transaction():
counter = await counters.get("visits")
if counter is None:
counter = Counter(name="visits", value=0)
await counters.insert(counter)
else:
new_value = counter.value + 1
await counters.update("visits", {"value": new_value})
counter.value = new_value # 更新本地对象以便返回
return CountGetResponse(name=counter.name, value=counter.value) # type: ignore