router/article.py

from typing import List
import typing
from fastapi import APIRouter, Depends
from typing import List
from sqlalchemy.orm.session import Session
from db import db_article
from db.database import get_db
from db.models import Article
from schemas import ArticleCreate, ArticleDisplay


# エンドポイントを作成
router = APIRouter(prefix="/article", tags=["article"])


#---------------------------------
# 新規作成
#---------------------------------
# 返値のための response_model を追記したので、返り値がBaseModelで定義した内容になってる
@router.post("/", response_model=ArticleDisplay)
def create_article(article: ArticleCreate, db: Session = Depends(get_db)):
    return db_article.create_article(db, article)


#---------------------------------
# 全件取得 response_modelにはリストで返却するためList[ArticleDisplay]とする
#---------------------------------
@router.get("/", response_model=List[ArticleDisplay])
def  get_articles_all( db: Session = Depends(get_db), title: str = None , content: str = None ):
    result = db_article.get_articles_all(db, id, title , content )
    return result

 

#---------------------------------
# 詳細ページ
#---------------------------------
@router.get("/{id}", response_model=ArticleDisplay)
def get_article(id: int, db: Session = Depends(get_db) ):
    result = db_article.get_article(db, id )

    if result is None:
        raise HTTPException(status_code=404, detail="User not found")

    return result

 

#---------------------------------
# 更新処理
#---------------------------------
@router.put("/{id}")
def update_article(id: int, request: ArticleCreate, db: Session = Depends(get_db)):
    return db_article.update_article(db, id, request)


#---------------------------------
# 削除処理
#---------------------------------
@router.delete("/{id}")
def delete_article(id: int, db: Session = Depends(get_db)):
    return db_article.delete_article(db, id)