db/db_article.py

from sqlalchemy.orm.session import Session
from schemas import ArticleBase, ArticleCreate
from db.models import Article


def create_article(db: Session, request: ArticleBase):
    new_article = Article(
        title = request.title,
        content = request.content,
        is_display = request.is_display
    )
    db.add(new_article)
    db.commit()
    db.refresh(new_article)
    return new_article


def get_articles_all(db: Session , id: int, title: str , content: str ):
    where_list=[]

    if title :
        where_list.append( Article.title.like( '%'+title+'%' ) )

    if content :
        where_list.append( Article.content.like( '%'+ content +'%' )  )

    r = db.query(Article).filter( *where_list ).all()  # ok
    return r


def get_article(db: Session, id: int):
    return db.query(Article).filter(Article.id == id).first()


def update_article(db: Session, id: int, request: ArticleCreate):
    article = db.query(Article).filter(Article.id == id)
    article.update({
        Article.title: request.title,
        Article.content: request.content,
        Article.is_display: request.is_display
    })
    db.commit()
    return {'message': 'success'}


def delete_article(db: Session, id: int):
    article = db.query(Article).filter(Article.id == id)
    article.delete()
    db.commit()
    return {'message': 'success'}