diff --git a/api_routes/v1/clean.py b/api_routes/v1/clean.py new file mode 100644 index 0000000..f68ca44 --- /dev/null +++ b/api_routes/v1/clean.py @@ -0,0 +1,45 @@ +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from utils.database import get_db # 从database.py中导入get_db函数 +from utils.database import add_clean_record, get_clean_records # 导入数据库操作函数 +from pydantic import BaseModel +from flask import jsonify, request +from . import api_v1 + +# 创建 FastAPI 路由器 +router = APIRouter() + +# 请求体模型 - 用于POST请求,包含"name"和"userid" +class AddCleanRequest(BaseModel): + name: str + userid: str + +# 响应模型 - 用于统一结构化响应 +class CleanResponse(BaseModel): + code: int + status: str + message: str + data: dict + +# POST /api/clean/add - 添加打扫记录 +@router.post("/add", response_model=CleanResponse) +def add_clean(request: AddCleanRequest, db: Session = Depends(get_db)): + try: + response = add_clean_record(db, name=request.name, userid=request.userid) + return response + except Exception as e: + raise HTTPException(status_code=500, detail="服务器内部错误") + +# GET /api/clean/list - 获取打扫记录列表 +class GetCleanRequest(BaseModel): + page: int + size: int + +@router.get("/list", response_model=CleanResponse) +def get_clean(request: GetCleanRequest, db: Session = Depends(get_db)): + try: + response = get_clean_records(db, page=request.page, size=request.size) + return response + except Exception as e: + raise HTTPException(status_code=500, detail="服务器内部错误") + diff --git a/models/clean.py b/models/clean.py new file mode 100644 index 0000000..b3e66a6 --- /dev/null +++ b/models/clean.py @@ -0,0 +1,22 @@ +from datetime import datetime +from sqlalchemy import Column, Integer, String +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import validates + +Base = declarative_base() + +class Clean(Base): + __tablename__ = 'clean' # 表名为 'clean' + + id = Column(Integer, primary_key=True, autoincrement=True) # 自动递增的主键 + record_id = Column(String(50), nullable=False, unique=True) # 记录编号,唯一 + name = Column(String(100), nullable=False) # 相关人员名称 + userid = Column(String(100), nullable=False) # 相关人员的电子邮件地址 + times = Column(Integer, nullable=False) # 打扫次数 + created_at = Column(String(20), default=datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')) # 创建时间 + updated_at = Column(String(20), default=datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')) # 更新时间 + + def __repr__(self): + return f"" + + diff --git a/utils/database.py b/utils/database.py index 3d39899..e6c3ab1 100644 --- a/utils/database.py +++ b/utils/database.py @@ -6,8 +6,17 @@ import os +from datetime import datetime +import uuid +from models.arrange import Arrange # 引入 Clean 模型 +from models.message import Message +from sqlalchemy.orm import Session + load_dotenv() +SQLALCHEMY_DATABASE_URL = os.getenv("DATABASE_URL") +print(os.getenv("DATABASE_URL")) + SQLALCHEMY_DATABASE_URL = os.getenv("DATABASE_URL") engine = create_engine(SQLALCHEMY_DATABASE_URL) @@ -17,6 +26,84 @@ Base = declarative_base() + +# 添加安排记录 +def add_arrange_record(db: Session, name: str, type: str, order: int): + new_arrange = Arrange(name=name, type=type, order=order) + db.add(new_arrange) + db.commit() + db.refresh(new_arrange) + return new_arrange + +# 学年活动记录表 +# 获取所有安排记录 +def get_arrange_records(db: Session, skip: int = 0, limit: int = 10): + return db.query(Arrange).offset(skip).limit(limit).all() + +# 获取某个安排记录 +def get_arrange_by_id(db: Session, arrange_id: int): + return db.query(Arrange).filter(Arrange.id == arrange_id).first() + +# 更新安排记录 +def update_arrange_record(db: Session, arrange_id: int, name: str, type: str, order: int): + arrange = db.query(Arrange).filter(Arrange.id == arrange_id).first() + if arrange: + arrange.name = name + arrange.type = type + arrange.order = order + db.commit() + db.refresh(arrange) + return arrange + return None + +# 删除安排记录 +def delete_arrange_record(db: Session, arrange_id: int): + arrange = db.query(Arrange).filter(Arrange.id == arrange_id).first() + if arrange: + db.delete(arrange) + db.commit() + return True + return False + + +# 信息表 +# 添加消息记录 +def add_message_record(db: Session, message_id: str, sender_id: str, receiver_id: str, content: str, time_stamp: str, state: int): + new_message = Message(message_id=message_id, sender_id=sender_id, receiver_id=receiver_id, content=content, time_stamp=time_stamp, state=state) + db.add(new_message) + db.commit() + db.refresh(new_message) + return new_message + +# 获取所有消息记录 +def get_message_records(db: Session, skip: int = 0, limit: int = 10): + return db.query(Message).offset(skip).limit(limit).all() + +# 获取某个消息记录 +def get_message_by_id(db: Session, message_id: int): + return db.query(Message).filter(Message.id == message_id).first() + +# 更新消息记录 +def update_message_record(db: Session, message_id: int, content: str, state: int): + message = db.query(Message).filter(Message.id == message_id).first() + if message: + message.content = content + message.state = state + db.commit() + db.refresh(message) + return message + return None + +# 删除消息记录 +def delete_message_record(db: Session, message_id: int): + message = db.query(Message).filter(Message.id == message_id).first() + if message: + db.delete(message) + db.commit() + return True + return False + + def get_db(): db = SessionLocal() try: @@ -310,3 +397,4 @@ def delete_stuff_borrow(db: Session, sb_id: str) -> bool: return True +