zhenxun_bot/models/friend_user.py
2021-05-20 18:37:51 +08:00

88 lines
2.5 KiB
Python

from services.db_context import db
class FriendUser(db.Model):
__tablename__ = 'friend_users'
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.BigInteger(), nullable=False)
user_name = db.Column(db.Unicode(), nullable=False, default="")
nickname = db.Column(db.Unicode())
_idx1 = db.Index('friend_users_idx1', 'user_id', unique=True)
@classmethod
async def get_user_name(cls, user_id: int) -> str:
query = cls.query.where(
cls.user_id == user_id
)
user = await query.gino.first()
if user:
return user.user_name
else:
return ''
@classmethod
async def add_friend_info(cls, user_id: int, user_name: str) -> 'bool':
try:
query = cls.query.where(
cls.user_id == user_id
)
user = await query.with_for_update().gino.first()
if not user:
await cls.create(
user_id=user_id,
user_name=user_name,
)
else:
await user.update(
user_name=user_name,
).apply()
return True
except Exception:
return False
@classmethod
async def delete_friend_info(cls, user_id: int) -> 'bool':
try:
query = cls.query.where(
cls.user_id == user_id
)
user = await query.with_for_update().gino.first()
if user:
await user.delete()
return True
except Exception:
return False
@classmethod
async def get_friend_nickname(cls, user_id: int) -> 'str':
query = cls.query.where(
cls.user_id == user_id
)
user = await query.with_for_update().gino.first()
if user:
if user.nickname:
return user.nickname
return ''
@classmethod
async def set_friend_nickname(cls, user_id: int, nickname: str) -> 'bool':
try:
query = cls.query.where(
cls.user_id == user_id
)
user = await query.with_for_update().gino.first()
if not user:
await cls.create(
user_id=user_id,
nickname=nickname,
)
else:
await user.update(
nickname=nickname,
).apply()
return True
except Exception:
return False