"""Query parameters used to sort todo-items."""

from enum import Enum

from sqlalchemy import Column

from todo.models.todos import TodoItem
from todo.dependencies.common import PaginationParams, SortOrder


class SortableTodoItemField(Enum):
    """Defines which fields todo-item lists can be sorted on."""

    id = 'id'
    title = 'title'
    done = 'done'
    created = 'created'
    updated = 'updated'
    finished = 'finished'

    @property
    def field(self) -> Column:
        return getattr(TodoItem, self.value)


class TodoItemSortablePaginationParams(PaginationParams):
    def __init__(
            self,
            skip: int = 0, limit: int = 100,
            sortby: SortableTodoItemField = SortableTodoItemField['updated'],
            sortorder: SortOrder = SortOrder['desc'],
        ):
        super().__init__(skip=skip, limit=limit)
        self.sortby = sortby
        self.sortorder = sortorder
