| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- from app.core.database import DatabaseManager
- from ._const import I2IRecommendDataSyncConst
- class I2IRecommendDataSyncMapper(I2IRecommendDataSyncConst):
- def __init__(self, pool: DatabaseManager):
- self.pool = pool
- async def fetch_all_accounts(self):
- """查询有待激活数据的账号"""
- query = """
- SELECT gh_id FROM i2i_recommend WHERE status = %s GROUP BY gh_id;
- """
- return await self.pool.async_fetch(
- query=query,
- params=(self.VersionStatus.INIT,),
- )
- async def fetch_max_version_for_account(self, gh_id: str):
- """
- 查询单个账号的最大version及其status
- 返回: {max_version, status} or None
- """
- query = """
- SELECT version AS max_version, status
- FROM i2i_recommend
- WHERE gh_id = %s
- ORDER BY version DESC
- LIMIT 1;
- """
- rows = await self.pool.async_fetch(query=query, params=(gh_id,))
- return rows[0] if rows else None
- async def activate_new_version(self, gh_id: str, version: str):
- """将该账号最新version的数据 status 0 -> 1"""
- query = """
- UPDATE i2i_recommend
- SET status = %s
- WHERE gh_id = %s AND version = %s AND status = %s;
- """
- return await self.pool.async_save(
- query=query,
- params=(
- self.VersionStatus.ONLINE,
- gh_id,
- version,
- self.VersionStatus.INIT,
- ),
- )
- async def deactivate_old_versions(self, gh_id: str, latest_version: str):
- """将该账号旧version的数据 status 1 -> 2(归档)"""
- query = """
- UPDATE i2i_recommend
- SET status = %s
- WHERE gh_id = %s AND version != %s AND status = %s;
- """
- return await self.pool.async_save(
- query=query,
- params=(
- self.VersionStatus.ARCHIVED,
- gh_id,
- latest_version,
- self.VersionStatus.ONLINE,
- ),
- )
- __all__ = ["I2IRecommendDataSyncMapper"]
|