Compare commits

..

2 Commits

Author SHA1 Message Date
81beb914ee Merge remote-tracking branch 'origin/master' 2026-03-20 23:41:03 +08:00
zhangyonghao
8400fb6127 1 2026-03-20 23:09:51 +08:00
3 changed files with 29 additions and 3 deletions

View File

@@ -4,7 +4,8 @@ from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from app.config import settings from app.config import settings
from app.database import Base, engine from app.database import Base, engine, SessionLocal
from app.models import Mindmap
from app.routers import chat, mindmaps from app.routers import chat, mindmaps
logging.basicConfig( logging.basicConfig(
@@ -15,6 +16,15 @@ logger = logging.getLogger(__name__)
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)
# 删除过期记录
db = SessionLocal()
try:
deleted_count = Mindmap.delete_expired_records(db)
if deleted_count > 0:
logger.info(f"Deleted {deleted_count} expired mindmap records")
finally:
db.close()
app = FastAPI(title=settings.app_name) app = FastAPI(title=settings.app_name)
app.add_middleware( app.add_middleware(

View File

@@ -1,7 +1,7 @@
from datetime import datetime from datetime import datetime, timedelta
from sqlalchemy import DateTime, Integer, String, Text from sqlalchemy import DateTime, Integer, String, Text
from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.orm import Mapped, mapped_column, Session
from app.database import Base from app.database import Base
@@ -22,3 +22,11 @@ class Mindmap(Base):
updated_at: Mapped[datetime] = mapped_column( updated_at: Mapped[datetime] = mapped_column(
DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False
) )
@classmethod
def delete_expired_records(cls, db: Session, days: int = 5) -> int:
"""删除超过指定天数的记录"""
cutoff_date = datetime.utcnow() - timedelta(days=days)
deleted = db.query(cls).filter(cls.created_at < cutoff_date).delete()
db.commit()
return deleted

View File

@@ -1,4 +1,5 @@
import json import json
import logging
import secrets import secrets
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
@@ -9,6 +10,8 @@ from app.database import get_db
from app.models import Mindmap from app.models import Mindmap
from app.schemas import MindmapCreateRequest, MindmapNode, MindmapResponse from app.schemas import MindmapCreateRequest, MindmapNode, MindmapResponse
logger = logging.getLogger(__name__)
router = APIRouter(prefix="/mindmaps", tags=["mindmaps"]) router = APIRouter(prefix="/mindmaps", tags=["mindmaps"])
@@ -44,6 +47,11 @@ def create_mindmap(
payload: MindmapCreateRequest, payload: MindmapCreateRequest,
db: Session = Depends(get_db), db: Session = Depends(get_db),
) -> MindmapResponse: ) -> MindmapResponse:
# 先删除过期记录
deleted_count = Mindmap.delete_expired_records(db)
if deleted_count > 0:
logger.info(f"Deleted {deleted_count} expired mindmap records")
title = extract_title_from_json(payload.mindmap_json) title = extract_title_from_json(payload.mindmap_json)
raw_json = json.dumps(payload.mindmap_json, ensure_ascii=False) raw_json = json.dumps(payload.mindmap_json, ensure_ascii=False)
unique_id = generate_unique_id() unique_id = generate_unique_id()