37 lines
924 B
Python
37 lines
924 B
Python
"""Query parameters used to sort users."""
|
|
|
|
from enum import Enum
|
|
|
|
from sqlalchemy import Column
|
|
|
|
from todo.models.users import User
|
|
from todo.dependencies.common import PaginationParams, SortOrder
|
|
|
|
|
|
class SortableUserField(Enum):
|
|
"""Defines which fields user lists can be sorted on."""
|
|
|
|
id = 'id'
|
|
email = 'email'
|
|
created = 'created'
|
|
updated = 'updated'
|
|
first_name = 'first_name'
|
|
last_name = 'last_name'
|
|
is_admin = 'is_admin'
|
|
|
|
@property
|
|
def field(self) -> Column:
|
|
return getattr(User, self.value)
|
|
|
|
|
|
class UserSortablePaginationParams(PaginationParams):
|
|
def __init__(
|
|
self,
|
|
skip: int = 0, limit: int = 100,
|
|
sortby: SortableUserField = SortableUserField['id'],
|
|
sortorder: SortOrder = SortOrder['asc'],
|
|
):
|
|
super().__init__(skip=skip, limit=limit)
|
|
self.sortby = sortby
|
|
self.sortorder = sortorder
|