44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
|
"""This module provides FastAPI dependencies for commonly used query parameters."""
|
||
|
|
||
|
|
||
|
from enum import Enum
|
||
|
from typing import Callable
|
||
|
|
||
|
import sqlalchemy
|
||
|
|
||
|
from todo.database.engine import Base
|
||
|
|
||
|
|
||
|
class SortOrder(Enum):
|
||
|
"""Possible sort orders for database queries."""
|
||
|
|
||
|
asc = 'asc'
|
||
|
desc = 'desc'
|
||
|
|
||
|
@property
|
||
|
def call(self) -> Callable:
|
||
|
"""Returns the sqlalchemy sort function depending on the instance value."""
|
||
|
|
||
|
if self.value == 'asc':
|
||
|
return sqlalchemy.asc
|
||
|
elif self.value == 'desc':
|
||
|
return sqlalchemy.desc
|
||
|
else:
|
||
|
raise RuntimeError("Logic error.")
|
||
|
|
||
|
|
||
|
class PaginationParams():
|
||
|
"""Represents query parameters used for pagination, when querying for a list of items.
|
||
|
|
||
|
Attributes
|
||
|
----------
|
||
|
skip : int
|
||
|
The number of items to be skipped from the start of the start of the list.
|
||
|
limit : int
|
||
|
Limits the total number of returned list items to the specified number.
|
||
|
"""
|
||
|
|
||
|
def __init__(self, skip: int = 0, limit: int = 100):
|
||
|
self.skip = skip
|
||
|
self.limit = limit
|