mirror of
https://github.com/A-Minos/nonebot-plugin-tetris-stats.git
synced 2026-03-05 05:36:54 +08:00
✨ 优化 anti_duplicate_add
This commit is contained in:
@@ -68,11 +68,11 @@ T = TypeVar('T', 'TETRIOHistoricalData', 'TOPHistoricalData', 'TOSHistoricalData
|
|||||||
lock = Lock()
|
lock = Lock()
|
||||||
|
|
||||||
|
|
||||||
async def anti_duplicate_add(cls: type[T], model: T) -> None:
|
async def anti_duplicate_add(model: T) -> None:
|
||||||
async with lock, get_session() as session:
|
async with lock, get_session() as session:
|
||||||
result = (
|
result = (
|
||||||
await session.scalars(
|
await session.scalars(
|
||||||
select(cls)
|
select(cls := model.__class__)
|
||||||
.where(cls.update_time == model.update_time)
|
.where(cls.update_time == model.update_time)
|
||||||
.where(cls.user_unique_identifier == model.user_unique_identifier)
|
.where(cls.user_unique_identifier == model.user_unique_identifier)
|
||||||
.where(cls.api_type == model.api_type)
|
.where(cls.api_type == model.api_type)
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ class Player:
|
|||||||
raise RequestError(msg)
|
raise RequestError(msg)
|
||||||
self._user_info = user_info
|
self._user_info = user_info
|
||||||
await anti_duplicate_add(
|
await anti_duplicate_add(
|
||||||
TETRIOHistoricalData,
|
|
||||||
TETRIOHistoricalData(
|
TETRIOHistoricalData(
|
||||||
user_unique_identifier=(await self.user).unique_identifier,
|
user_unique_identifier=(await self.user).unique_identifier,
|
||||||
api_type='User Info',
|
api_type='User Info',
|
||||||
@@ -155,7 +154,6 @@ class Player:
|
|||||||
raise RequestError(msg)
|
raise RequestError(msg)
|
||||||
self._summaries[summaries_type] = summaries
|
self._summaries[summaries_type] = summaries
|
||||||
await anti_duplicate_add(
|
await anti_duplicate_add(
|
||||||
TETRIOHistoricalData,
|
|
||||||
TETRIOHistoricalData(
|
TETRIOHistoricalData(
|
||||||
user_unique_identifier=(await self.user).unique_identifier,
|
user_unique_identifier=(await self.user).unique_identifier,
|
||||||
api_type=summaries_type,
|
api_type=summaries_type,
|
||||||
@@ -231,7 +229,6 @@ class Player:
|
|||||||
raise RequestError(msg)
|
raise RequestError(msg)
|
||||||
self._records[record_key] = records
|
self._records[record_key] = records
|
||||||
await anti_duplicate_add(
|
await anti_duplicate_add(
|
||||||
TETRIOHistoricalData,
|
|
||||||
TETRIOHistoricalData(
|
TETRIOHistoricalData(
|
||||||
user_unique_identifier=(await self.user).unique_identifier,
|
user_unique_identifier=(await self.user).unique_identifier,
|
||||||
api_type=record_key.to_records(),
|
api_type=record_key.to_records(),
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ class Player:
|
|||||||
raw_user_profile = await Request.request(url, is_json=False)
|
raw_user_profile = await Request.request(url, is_json=False)
|
||||||
self._user_profile = self._parse_profile(raw_user_profile)
|
self._user_profile = self._parse_profile(raw_user_profile)
|
||||||
await anti_duplicate_add(
|
await anti_duplicate_add(
|
||||||
TOPHistoricalData,
|
|
||||||
TOPHistoricalData(
|
TOPHistoricalData(
|
||||||
user_unique_identifier=(await self.user).unique_identifier,
|
user_unique_identifier=(await self.user).unique_identifier,
|
||||||
api_type='User Profile',
|
api_type='User Profile',
|
||||||
|
|||||||
@@ -85,7 +85,6 @@ class Player:
|
|||||||
raise RequestError(msg)
|
raise RequestError(msg)
|
||||||
self._user_info = user_info
|
self._user_info = user_info
|
||||||
await anti_duplicate_add(
|
await anti_duplicate_add(
|
||||||
TOSHistoricalData,
|
|
||||||
TOSHistoricalData(
|
TOSHistoricalData(
|
||||||
user_unique_identifier=(await self.user).unique_identifier,
|
user_unique_identifier=(await self.user).unique_identifier,
|
||||||
api_type='User Info',
|
api_type='User Info',
|
||||||
@@ -117,7 +116,6 @@ class Player:
|
|||||||
)
|
)
|
||||||
self._user_profile[params] = type_validate_json(UserProfile, raw_user_profile)
|
self._user_profile[params] = type_validate_json(UserProfile, raw_user_profile)
|
||||||
await anti_duplicate_add(
|
await anti_duplicate_add(
|
||||||
TOSHistoricalData,
|
|
||||||
TOSHistoricalData(
|
TOSHistoricalData(
|
||||||
user_unique_identifier=(await self.user).unique_identifier,
|
user_unique_identifier=(await self.user).unique_identifier,
|
||||||
api_type='User Profile',
|
api_type='User Profile',
|
||||||
|
|||||||
Reference in New Issue
Block a user