Working version

This commit is contained in:
Eden Kirin
2023-08-27 00:03:13 +02:00
parent 7f1acec1af
commit 9faca36ce1
5 changed files with 86 additions and 72 deletions

View File

@ -1,8 +1,10 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Optional, cast
from dataclasses import dataclass
from typing import TYPE_CHECKING, Optional, cast, TypeVar, Type, Generic
from litestar import Controller, delete, get, post, put
from litestar.contrib.repository.filters import LimitOffset, SearchFilter, FilterTypes
from litestar.di import Provide
from litestar.pagination import (
AbstractAsyncOffsetPaginator,
@ -12,16 +14,19 @@ from litestar.status_codes import HTTP_200_OK
from sqlalchemy import ScalarResult, func, select
from sqlalchemy.ext.asyncio import AsyncSession
from app.domain.machine import MachineReadDTO, MachineWriteDTO, Repository, Service
from app.domain.machine import Machine
from litestar.contrib.repository.filters import SearchFilter, LimitOffset
from app.domain.machine import (
Machine,
MachineReadDTO,
MachineWriteDTO,
Repository,
Service,
)
from app.lib.responses import ObjectListResponse, ObjectResponse
if TYPE_CHECKING:
from sqlalchemy.ext.asyncio import AsyncSession
DETAIL_ROUTE = "/{machine_id:int}"
@ -59,20 +64,10 @@ class MachineController(Controller):
@get()
async def get_machines(
self, service: Service,
search: Optional[str] = None,
) -> list[Machine]:
"""Get a list of authors."""
print("#" * 100)
print(search)
print("#" * 100)
self, service: Service, search: Optional[str] = None
) -> ObjectListResponse[Machine]:
filters = [
LimitOffset(
limit=20,
offset=0
),
LimitOffset(limit=20, offset=0),
]
if search:
@ -83,22 +78,18 @@ class MachineController(Controller):
),
)
return await service.list(*filters)
# @get()
# async def get_machines(
# self, service: Service, filters: list[FilterTypes]
# ) -> list[Machine]:
# """Get a list of authors."""
# return await service.list(*filters)
content = await service.list(*filters)
return ObjectListResponse(content=content)
# @post()
# async def create_author(self, data: Machine, service: Service) -> Machine:
# return await service.create(data)
#
@get(DETAIL_ROUTE)
async def get_machine(self, service: Service, machine_id: int) -> Machine:
return await service.get(machine_id)
async def get_machine(self, service: Service, machine_id: int) -> ObjectResponse[Machine]:
content = await service.get(machine_id)
return ObjectResponse(content=content)
#
# @put(DETAIL_ROUTE)
# async def update_author(