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)