MCPcopy Create free account
hub / github.com/Loping151/RoverSign / update_last_used_time

Method update_last_used_time

RoverSign/utils/database/models.py:209–254  ·  view source on GitHub ↗

更新最后使用时间,如果创建时间为空则同时设置创建时间 会更新所有具有相同 uid 和 cookie 的记录

(
        cls,
        session: AsyncSession,
        uid: str,
        user_id: str,
        bot_id: str,
        game_id: Optional[int] = None,
    )

Source from the content-addressed store, hash-verified

207 @with_lock
208 @with_session
209 async def update_last_used_time(
210 cls,
211 session: AsyncSession,
212 uid: str,
213 user_id: str,
214 bot_id: str,
215 game_id: Optional[int] = None,
216 ):
217 """更新最后使用时间,如果创建时间为空则同时设置创建时间
218
219 会更新所有具有相同 uid 和 cookie 的记录
220 """
221 import time
222
223 current_time = int(time.time())
224
225 # 先查询当前用户获取 cookie
226 filters = [
227 cls.user_id == user_id,
228 cls.uid == uid,
229 cls.bot_id == bot_id,
230 ]
231 if game_id is not None:
232 filters.append(cls.game_id == game_id)
233
234 result = await session.execute(select(cls).where(*filters))
235 user = result.scalars().first()
236
237 if user and user.cookie:
238 # 更新所有具有相同 user_id 和 cookie 的记录
239 all_users_result = await session.execute(
240 select(cls).where(
241 cls.user_id == user_id,
242 cls.cookie == user.cookie,
243 )
244 )
245 all_users = all_users_result.scalars().all()
246
247 # 批量更新
248 for u in all_users:
249 u.last_used_time = current_time
250 if u.created_time is None:
251 u.created_time = current_time
252
253 return True
254 return False
255
256
257class RoverSignData(PydanticBaseModel):

Callers 1

rover_sign_up_handlerFunction · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected