add mai2 UserIntimateApi

This commit is contained in:
ppc
2024-09-16 17:56:22 +01:00
parent 77aa1afaa0
commit d8169e37cc
3 changed files with 103 additions and 0 deletions

View File

@@ -513,6 +513,22 @@ rival = Table(
mysql_charset="utf8mb4",
)
intimacy = Table(
"mai2_user_intimate",
metadata,
Column("id", Integer, primary_key=True, nullable=False),
Column(
"user",
ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"),
nullable=False,
),
Column("partnerId", Integer, nullable=False),
Column("intimateLevel", Integer, nullable=False),
Column("intimateCountRewarded", Integer, nullable=False),
UniqueConstraint("user", "partnerId", name="mai2_user_intimate_uk"),
mysql_charset="utf8mb4",
)
class Mai2ProfileData(BaseData):
async def get_all_profile_versions(self, user_id: int) -> Optional[List[Row]]:
result = await self.execute(detail.select(detail.c.user == user_id))
@@ -908,6 +924,27 @@ class Mai2ProfileData(BaseData):
if not result:
self.logger.error(f"Failed to remove rival {rival_id} for user {user_id}!")
async def get_intimacy(self, user_id: int) -> Optional[List[Row]]:
result = await self.execute(intimacy.select(intimacy.c.user == user_id))
if result:
return result.fetchall()
async def put_intimacy(self, user_id: int, partner_id: int, level: int, count_rewarded: int) -> Optional[int]:
sql = insert(intimacy).values(
user = user_id,
partnerId = partner_id,
intimateLevel = level,
intimateCountRewarded = count_rewarded
)
conflict = sql.on_duplicate_key_update(intimateLevel = level, intimateCountRewarded = count_rewarded)
result = await self.execute(conflict)
if result:
return result.lastrowid
self.logger.error(f"Failed to update intimacy for user {user_id} and partner {partner_id}!")
async def update_name(self, user_id: int, new_name: str) -> bool:
sql = detail.update(detail.c.user == user_id).values(
userName=new_name