Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions app/api/cards.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
import typing

import litestar
from litestar.params import FromPath # noqa: TC002
from litestar.di import NamedDependency
from litestar.params import FromPath

from app import models, schemas
from app.repositories import CardsRepository # noqa: TC001
from app.repositories import CardsRepository


@litestar.get("/decks/{deck_id:int}/cards/")
async def list_cards(deck_id: FromPath[int], cards_repository: CardsRepository) -> schemas.Cards:
async def list_cards(deck_id: FromPath[int], cards_repository: NamedDependency[CardsRepository]) -> schemas.Cards:
objects = await cards_repository.list_for_deck(deck_id)
return schemas.Cards.from_models(objects)


@litestar.get("/cards/{card_id:int}/")
async def get_card(card_id: FromPath[int], cards_repository: CardsRepository) -> schemas.Card:
async def get_card(card_id: FromPath[int], cards_repository: NamedDependency[CardsRepository]) -> schemas.Card:
instance = await cards_repository.get_one(models.Card.id == card_id)
return schemas.Card.model_validate(instance)


@litestar.post("/decks/{deck_id:int}/cards/")
async def create_cards(
deck_id: FromPath[int], data: list[schemas.CardCreate], cards_repository: CardsRepository
deck_id: FromPath[int], data: list[schemas.CardCreate], cards_repository: NamedDependency[CardsRepository]
) -> schemas.Cards:
objects = await cards_repository.add_cards(deck_id, data)
return schemas.Cards.from_models(objects)


@litestar.put("/decks/{deck_id:int}/cards/")
async def update_cards(
deck_id: FromPath[int], data: list[schemas.Card], cards_repository: CardsRepository
deck_id: FromPath[int], data: list[schemas.Card], cards_repository: NamedDependency[CardsRepository]
) -> schemas.Cards:
objects = await cards_repository.upsert_cards(deck_id, data)
return schemas.Cards.from_models(objects)
Expand Down
13 changes: 7 additions & 6 deletions app/api/decks.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import typing

import litestar
from litestar.params import FromPath # noqa: TC002
from litestar.di import NamedDependency
from litestar.params import FromPath

from app import schemas
from app.repositories import DecksRepository # noqa: TC001
from app.repositories import DecksRepository


@litestar.get("/decks/")
async def list_decks(decks_repository: DecksRepository) -> schemas.Decks:
async def list_decks(decks_repository: NamedDependency[DecksRepository]) -> schemas.Decks:
objects = await decks_repository.get_many()
return schemas.Decks.from_models(objects)


@litestar.get("/decks/{deck_id:int}/")
async def get_deck(deck_id: FromPath[int], decks_repository: DecksRepository) -> schemas.DeckWithCards:
async def get_deck(deck_id: FromPath[int], decks_repository: NamedDependency[DecksRepository]) -> schemas.DeckWithCards:
instance = await decks_repository.fetch_with_cards(deck_id)
return schemas.DeckWithCards.model_validate(instance)

Expand All @@ -23,14 +24,14 @@ async def get_deck(deck_id: FromPath[int], decks_repository: DecksRepository) ->
async def update_deck(
deck_id: FromPath[int],
data: schemas.DeckCreate,
decks_repository: DecksRepository,
decks_repository: NamedDependency[DecksRepository],
) -> schemas.Deck:
instance = await decks_repository.update(data=data.model_dump(), item_id=deck_id)
return schemas.Deck.model_validate(instance)


@litestar.post("/decks/")
async def create_deck(data: schemas.DeckCreate, decks_repository: DecksRepository) -> schemas.Deck:
async def create_deck(data: schemas.DeckCreate, decks_repository: NamedDependency[DecksRepository]) -> schemas.Deck:
instance = await decks_repository.create(data)
return schemas.Deck.model_validate(instance)

Expand Down
4 changes: 1 addition & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,12 @@ ignore = [
"ISC001", # flake8-implicit-str-concat
"S105", # Possible hardcoded password
"CPY001", # Missing copyright notice at top of file
"TC", # Litestar and modern-di read annotations at runtime
]
isort.lines-after-imports = 2
isort.no-lines-before = ["standard-library", "local-folder"]

[tool.ruff.lint.extend-per-file-ignores]
"app/resources/*.py" = [
"TC", # modern-di reads DI creator annotations at runtime
]
"tests/*.py" = [
"S101", # allow asserts
]
Expand Down
Loading