from typing import Optional from sqlalchemy.orm import Session from mooc.crud.crud_base import CRUDBase from mooc.models.news_reply import NewsReply from mooc.schemas.news_reply import NewsReplyCreate, NewsReplyUpdate class CRUDNewsReply(CRUDBase[NewsReply, NewsReplyCreate, NewsReplyUpdate]): def get_by_id(self, db: Session, *, id: int) -> Optional[NewsReply]: return self.get_by_field(db, "Id", id) # 注意这里使用 "Id" 而不是 "id" # 创建实例 news_reply = CRUDNewsReply(NewsReply) def get_news_reply(db: Session, news_reply_id: int): return db.query(models.NewsReply).filter(models.NewsReply.Id == news_reply_id).first() def get_news_replies(db: Session, skip: int = 0, limit: int = 100): return db.query(models.NewsReply).offset(skip).limit(limit).all() def create_news_reply(db: Session, news_reply: schemas.NewsReplyCreate): db_news_reply = models.NewsReply(**news_reply.dict()) db.add(db_news_reply) db.commit() db.refresh(db_news_reply) return db_news_reply def update_news_reply(db: Session, news_reply_id: int, news_reply: schemas.NewsReplyCreate): db_news_reply = db.query(models.NewsReply).filter(models.NewsReply.Id == news_reply_id).first() if db_news_reply: for key, value in news_reply.dict().items(): setattr(db_news_reply, key, value) db.commit() db.refresh(db_news_reply) return db_news_reply def delete_news_reply(db: Session, news_reply_id: int): db_news_reply = db.query(models.NewsReply).filter(models.NewsReply.Id == news_reply_id).first() if db_news_reply: db.delete(db_news_reply) db.commit() return db_news_reply