Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user