shot of post - πŸ’­ python - SQLAlchemy ORDER BY DESCENDING? - Stack Overflow

Here's my thought on πŸ’­ python - SQLAlchemy ORDER BY DESCENDING? - Stack Overflow


How to sort results from a sqlalchemy based orm.

.order_by(model.Entry.amount.desc())

I needed this to enable paging on my thoughts api.

@post_router.get("/posts/")
async def get_posts(
    *,
    request: Request,
    session: Session = Depends(get_session),
    hx_request: Annotated[str | None, Header()] = None,
    accept: Annotated[str | None, Header()] = None,
    current_user: Annotated[User, Depends(try_get_current_active_user)],
    page_size: int = 10,
    page: int = 1,
) -> Posts:
    "get all posts"
    statement = (
        select(Post)
        .where(Post.published)
        .order_by(Post.id.desc())
        .limit(page_size)
        .offset((page - 1) * page_size)
    )
    posts = session.exec(statement).all()
    posts = Posts(__root__=posts)
if isinstance(current_user, RedirectResponse):
    is_logged_in = False
else:
    is_logged_in = True

if hx_request and page == 1 and len(posts.__root__) == 0:
    return HTMLResponse('<ul id="posts"><li>No posts</li></ul>')
if hx_request and len(posts.__root__) == 0:
    return HTMLResponse("")
if not hx_request and len(posts.__root__) == 0:
    return ["no posts"]
if hx_request:
    return templates.TemplateResponse(
        "posts.html",
        {
            "request": request,
            "config": config,
            "posts": posts,
            "md": md,
            "is_logged_in": is_logged_in,
            "page": page,
        },
    )

if accept.startswith("text/html"):
    return templates.TemplateResponse(
        "base.html",
        {
            "request": request,
            "config": config,
            "posts": posts,
            "md": md,
            "is_logged_in": is_logged_in,
            "page": page,
        },
    )

return posts


!!! note This post is a thought. It's a short note that I make about someone else's content online. Learn more about the process [[ thoughts ]]

{.text-opacity-80} This post was a thought by Waylon Walker see all my thoughts at https://waylonwalker.com/thoughts