Metadata-Version: 2.4
Name: fastapi-paginate-pro
Version: 0.1.0
Summary: Effortless pagination for FastAPI + SQLAlchemy
License: MIT
Project-URL: Repository, https://github.com/shahabRDZ/fastapi-paginate
Keywords: fastapi,pagination,sqlalchemy,api
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.100.0
Requires-Dist: sqlalchemy>=2.0
Requires-Dist: pydantic>=2.0
Dynamic: license-file

<h1 align="center">fastapi-paginate</h1>

<p align="center">
  <strong>Effortless pagination for FastAPI + SQLAlchemy</strong>
</p>

<p align="center">
  <img src="https://img.shields.io/badge/python-3.10+-blue?logo=python&logoColor=white" />
  <img src="https://img.shields.io/badge/FastAPI-0.100+-009688?logo=fastapi" />
  <img src="https://img.shields.io/badge/license-MIT-green" />
</p>

---

## Install

```bash
pip install fastapi-paginate
```

## Usage

```python
from fastapi import FastAPI, Depends
from fastapi_paginate import paginate, PaginationParams, Page
from sqlalchemy import select

@app.get("/users", response_model=Page[UserResponse])
async def list_users(
    params: PaginationParams = Depends(),
    db: AsyncSession = Depends(get_db),
):
    query = select(User).order_by(User.created_at.desc())
    return await paginate(db, query, params, schema=UserResponse)
```

Response:
```json
{
    "items": [...],
    "total": 150,
    "page": 1,
    "size": 20,
    "pages": 8,
    "has_next": true,
    "has_prev": false
}
```

## Features

- One function call — `paginate(db, query, params)`
- Auto-counts total rows
- `has_next` / `has_prev` for frontend navigation
- Generic `Page[T]` works with any Pydantic schema
- Query params auto-extracted via `PaginationParams` dependency
- Works with any SQLAlchemy select query

## License

MIT
