Skip to content

Commit f310fd8

Browse files
committed
Update cursor example
1 parent f93042a commit f310fd8

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

examples/cursor/app.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from datetime import date
2-
from typing import Any, Iterator, Dict
2+
from pathlib import Path
3+
from typing import Any, Iterator, Dict, TypeVar
34

45
from faker import Faker
56
from fastapi import Depends, FastAPI, Request
@@ -8,17 +9,27 @@
89
from sqlmodel import Field, Session, SQLModel, create_engine, select
910

1011
from fastapi_pagination import pagination_ctx, resolve_params
11-
from fastapi_pagination.cursor import CursorPage
12+
from fastapi_pagination.cursor import CursorPage as BaseCursorPage
13+
from fastapi_pagination.customization import CustomizedPage, UseIncludeTotal, UseParamsFields
1214
from fastapi_pagination.ext.sqlmodel import paginate
1315

16+
ROOT = Path(__file__).parent
17+
1418
fake = Faker()
1519

1620
app = FastAPI()
17-
templates = Jinja2Templates(directory="templates")
21+
templates = Jinja2Templates(directory=ROOT / "templates")
1822

1923
engine = create_engine("sqlite:///.db")
2024

21-
CursorPage = CursorPage.with_custom_options(size=10)
25+
26+
T = TypeVar("T")
27+
28+
CursorPage = CustomizedPage[
29+
BaseCursorPage[T],
30+
UseIncludeTotal(True),
31+
UseParamsFields(size=10),
32+
]
2233

2334

2435
class User(SQLModel, table=True):
@@ -40,7 +51,7 @@ def get_db() -> Iterator[Session]:
4051
def user_data(id_: int) -> Dict[str, Any]:
4152
return {
4253
"id": id_ + 1,
43-
"profile_pic": f"https://avatars.dicebear.com/api/croodles/{id_}.svg",
54+
"profile_pic": f"https://api.dicebear.com/8.x/croodles/svg?seed={id_ + 1}",
4455
"first_name": fake.first_name(),
4556
"last_name": fake.last_name(),
4657
"email": fake.email(),
@@ -53,8 +64,10 @@ def on_startup():
5364
User.metadata.drop_all(engine)
5465
User.metadata.create_all(engine)
5566

67+
total = fake.pyint(100, 200)
68+
5669
with Session(engine) as session:
57-
session.add_all([User(**user_data(i)) for i in range(100)])
70+
session.add_all([User(**user_data(i)) for i in range(total)])
5871
session.commit()
5972

6073

examples/cursor/templates/index.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html lang="en">
33
<head>
44
<meta charset="UTF-8">
5-
<title>Title</title>
5+
<title>Cursor!</title>
66

77
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
88
integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
@@ -19,7 +19,9 @@
1919
<a class="btn btn-dark" id="go-next" onclick="goNext()">Next</a>
2020
</div>
2121

22-
<div class="w-25">
22+
<div class="d-flex justify-content-between w-25">
23+
<div class="align-self-center pe-4 text-nowrap">Total: {{ page.total }}</div>
24+
2325
<select id="select-size" class="form-select" onchange="onSelect()">
2426
<option value="10">10</option>
2527
<option value="25">25</option>

0 commit comments

Comments
 (0)