fastapi-svelte-template/backend/todo/dependencies/common.py

44 lines
1.1 KiB
Python
Raw Normal View History

"""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