first commit

This commit is contained in:
ytc1012
2026-02-04 16:11:55 +08:00
commit 0f3ee050dc
165 changed files with 25795 additions and 0 deletions

50
MeetSpot/app/db/crud.py Normal file
View File

@@ -0,0 +1,50 @@
"""常用数据库操作封装。"""
from datetime import datetime
from typing import Optional
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.models.user import User
def _default_nickname(phone: str) -> str:
suffix = phone[-4:] if len(phone) >= 4 else phone
return f"用户{suffix}"
async def get_user_by_phone(db: AsyncSession, phone: str) -> Optional[User]:
"""根据手机号查询用户。"""
stmt = select(User).where(User.phone == phone)
result = await db.execute(stmt)
return result.scalar_one_or_none()
async def get_user_by_id(db: AsyncSession, user_id: str) -> Optional[User]:
"""根据ID查询用户。"""
stmt = select(User).where(User.id == user_id)
result = await db.execute(stmt)
return result.scalar_one_or_none()
async def create_user(
db: AsyncSession, phone: str, nickname: Optional[str] = None, avatar_url: str = ""
) -> User:
"""创建新用户。"""
user = User(
phone=phone,
nickname=nickname or _default_nickname(phone),
avatar_url=avatar_url or "",
)
db.add(user)
await db.commit()
await db.refresh(user)
return user
async def touch_last_login(db: AsyncSession, user: User) -> None:
"""更新用户最近登录时间。"""
user.last_login = datetime.utcnow()
await db.commit()