forked from Hay1tsme/artemis
[core] Address SQLAlchemy deprecations
This commit is contained in:
@ -3,7 +3,7 @@ from typing import List, Optional
|
||||
import bcrypt
|
||||
from sqlalchemy import Column, Table
|
||||
from sqlalchemy.dialects.mysql import insert
|
||||
from sqlalchemy.engine import Row
|
||||
from sqlalchemy.engine import Row, RowMapping
|
||||
from sqlalchemy.sql import func, select
|
||||
from sqlalchemy.types import TIMESTAMP, Integer, String
|
||||
|
||||
@ -23,6 +23,7 @@ aime_user: Table = Table(
|
||||
mysql_charset="utf8mb4",
|
||||
)
|
||||
|
||||
|
||||
class UserData(BaseData):
|
||||
async def create_user(
|
||||
self,
|
||||
@ -57,28 +58,28 @@ class UserData(BaseData):
|
||||
return None
|
||||
return result.lastrowid
|
||||
|
||||
async def get_user(self, user_id: int) -> Optional[Row]:
|
||||
async def get_user(self, user_id: int) -> Optional[RowMapping]:
|
||||
sql = select(aime_user).where(aime_user.c.id == user_id)
|
||||
result = await self.execute(sql)
|
||||
if result is None:
|
||||
return False
|
||||
return result.fetchone()
|
||||
return result.mappings().fetchone()
|
||||
|
||||
async def check_password(self, user_id: int, passwd: bytes = None) -> bool:
|
||||
usr = await self.get_user(user_id)
|
||||
if usr is None:
|
||||
return False
|
||||
|
||||
if usr["password"] is None:
|
||||
if usr.password is None:
|
||||
return False
|
||||
|
||||
|
||||
if passwd is None or not passwd:
|
||||
return False
|
||||
|
||||
return bcrypt.checkpw(passwd, usr["password"].encode())
|
||||
return bcrypt.checkpw(passwd, usr.password.encode())
|
||||
|
||||
async def delete_user(self, user_id: int) -> None:
|
||||
sql = aime_user.delete(aime_user.c.id == user_id)
|
||||
sql = aime_user.delete().where(aime_user.c.id == user_id)
|
||||
|
||||
result = await self.execute(sql)
|
||||
if result is None:
|
||||
@ -103,24 +104,35 @@ class UserData(BaseData):
|
||||
return result.fetchone()
|
||||
|
||||
async def find_user_by_username(self, username: str) -> List[Row]:
|
||||
sql = aime_user.select(aime_user.c.username.like(f"%{username}%"))
|
||||
sql = aime_user.select().where(aime_user.c.username.like(f"%{username}%"))
|
||||
result = await self.execute(sql)
|
||||
if result is None:
|
||||
return False
|
||||
return result.fetchall()
|
||||
|
||||
async def change_password(self, user_id: int, new_passwd: str) -> bool:
|
||||
sql = aime_user.update(aime_user.c.id == user_id).values(password = new_passwd)
|
||||
sql = (
|
||||
aime_user.update()
|
||||
.where(aime_user.c.id == user_id)
|
||||
.values(password=new_passwd)
|
||||
)
|
||||
|
||||
result = await self.execute(sql)
|
||||
return result is not None
|
||||
|
||||
async def change_username(self, user_id: int, new_name: str) -> bool:
|
||||
sql = aime_user.update(aime_user.c.id == user_id).values(username = new_name)
|
||||
sql = (
|
||||
aime_user.update()
|
||||
.where(aime_user.c.id == user_id)
|
||||
.values(username=new_name)
|
||||
)
|
||||
|
||||
result = await self.execute(sql)
|
||||
return result is not None
|
||||
|
||||
async def get_user_by_username(self, username: str) -> Optional[Row]:
|
||||
result = await self.execute(aime_user.select(aime_user.c.username == username))
|
||||
if result: return result.fetchone()
|
||||
async def get_user_by_username(self, username: str) -> Optional[RowMapping]:
|
||||
result = await self.execute(
|
||||
aime_user.select().where(aime_user.c.username == username)
|
||||
)
|
||||
if result:
|
||||
return result.mappings().fetchone()
|
||||
|
Reference in New Issue
Block a user