Files
reverse_image_search_gpu/routers/user_collect.py
2024-11-10 22:02:45 +08:00

47 lines
2.3 KiB
Python

from typing import Optional
from fastapi import APIRouter, HTTPException, Header
from models.mysql import pool
router = APIRouter()
# 获取当前用户收藏记录
@router.get('', summary='自己的收藏记录', description='获取自己的收藏记录, 用于判断是否收藏(headers中必须附带token)')
def get_self_collect(token: Optional[str] = Header()):
with pool.connection() as conn:
with conn.cursor() as cursor:
# 查询用户ID
cursor.execute(f"SELECT user_id FROM web_auth WHERE token={token} limit 1")
data = cursor.fetchone()
print('auth: ', data)
if not data:
raise HTTPException(status_code=401, detail="用户未登录")
user_id = data['user_id']
# 查询收藏记录
cursor.execute(f"SELECT content FROM web_collect WHERE user_id={user_id} AND type='1'")
data = cursor.fetchall() # 获取所有记录列表
data = [str(item['content']) for item in data] # 转换为数组
# 查询图片ID(对特殊字符安全转义)
cursor.execute(f"SELECT id FROM web_images WHERE content IN ({','.join(['%s'] * len(data))})", data)
data = cursor.fetchall()
data = [str(item['id']) for item in data]
return {'code': 0, 'user_id': user_id, 'total': len(data), 'data': data }
# 获取指定用户收藏记录
@router.get('/{user_id}', summary='指定用的户收藏记录', description='获取指定用户收藏记录(仅测试用)')
def get_user_collect(user_id: int):
with pool.connection() as conn:
with conn.cursor() as cursor:
cursor.execute(f"SELECT content FROM web_collect WHERE user_id={user_id} AND type=1")
data = cursor.fetchall() # 获取所有记录列表
data = [str(item['content']) for item in data] # 转换为数组
if not data:
return {'code': 0, 'user_id': user_id, 'total': 0, 'data': []}
# 查询图片ID(对特殊字符安全转义)
cursor.execute(f"SELECT id FROM web_images WHERE content IN ({','.join(['%s'] * len(data))})", data)
data = cursor.fetchall()
data = [str(item['id']) for item in data]
return {'code': 0, 'user_id': user_id, 'total': len(data), 'data': data}