release: Elysia ToDo v1.0.0

鍏ㄦ爤涓汉淇℃伅绠$悊搴旂敤锛岄泦鎴愬緟鍔炰换鍔°€佷範鎯墦鍗°€佺邯蹇垫棩鎻愰啋銆佽祫浜ф€昏鍔熻兘銆

Made-with: Cursor
This commit is contained in:
祀梦
2026-03-14 22:21:26 +08:00
commit 2979197b1c
104 changed files with 21737 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from app.database import get_db
from app.models.user_settings import UserSettings
from app.schemas.user_settings import UserSettingsUpdate, UserSettingsResponse
from app.utils.datetime import utcnow
from app.utils.logger import logger
router = APIRouter(prefix="/api/user-settings", tags=["用户设置"])
@router.get("", response_model=UserSettingsResponse)
def get_user_settings(db: Session = Depends(get_db)):
"""获取用户设置(单例模式)"""
try:
settings = db.query(UserSettings).filter(UserSettings.id == 1).first()
if not settings:
# 首次访问时自动创建默认设置
settings = UserSettings(id=1)
db.add(settings)
db.commit()
db.refresh(settings)
logger.info("自动创建默认用户设置")
return settings
except Exception as e:
logger.error(f"获取用户设置失败: {str(e)}")
raise HTTPException(status_code=500, detail="获取用户设置失败")
@router.put("", response_model=UserSettingsResponse)
def update_user_settings(
data: UserSettingsUpdate,
db: Session = Depends(get_db)
):
"""更新用户设置upsert 单条记录)"""
try:
settings = db.query(UserSettings).filter(UserSettings.id == 1).first()
if not settings:
settings = UserSettings(id=1)
db.add(settings)
update_data = data.model_dump(exclude_unset=True)
for field, value in update_data.items():
setattr(settings, field, value)
settings.updated_at = utcnow()
db.commit()
db.refresh(settings)
logger.info("更新用户设置成功")
return settings
except Exception as e:
db.rollback()
logger.error(f"更新用户设置失败: {str(e)}")
raise HTTPException(status_code=500, detail="更新用户设置失败")