Skip to content

Commit

Permalink
Implemented rooms and items
Browse files Browse the repository at this point in the history
  • Loading branch information
scmmmh committed Nov 22, 2023
1 parent 11efecd commit 7d75fd7
Show file tree
Hide file tree
Showing 11 changed files with 267 additions and 222 deletions.
3 changes: 2 additions & 1 deletion museum_map/server/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@

from museum_map.__about__ import __tables__, __version__
from museum_map.models import db_session
from museum_map.server.api import floor_topics, floors, picks, rooms
from museum_map.server.api import floor_topics, floors, items, picks, rooms

logger = logging.getLogger(__name__)
router = APIRouter(prefix="/api")
router.include_router(floors.router)
router.include_router(floor_topics.router)
router.include_router(items.router)
router.include_router(picks.router)
router.include_router(rooms.router)

Expand Down
1 change: 1 addition & 0 deletions museum_map/server/api/floors.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ async def get_floors(dbsession: Annotated[AsyncSession, Depends(db_session)]):
"""Retrieve all floors."""
query = (
select(Floor)
.order_by(Floor.level)
.options(selectinload(Floor.rooms))
.options(selectinload(Floor.samples))
.options(selectinload(Floor.topics))
Expand Down
23 changes: 23 additions & 0 deletions museum_map/server/api/items.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""Routes for accessing the item data."""
import logging
from typing import Annotated

from fastapi import APIRouter, Depends, Query
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload

from museum_map.models import Item, ItemModel, db_session

router = APIRouter(prefix="/items")
logger = logging.getLogger(__name__)


@router.get("/", response_model=list[ItemModel])
async def get_items(
iid: Annotated[list[int] | None, Query()],
dbsession: Annotated[AsyncSession, Depends(db_session)],
):
"""Retrieve items."""
query = select(Item).filter(Item.id.in_(iid)).options(selectinload(Item.group)).options(selectinload(Item.room))
return (await dbsession.execute(query)).scalars()
4 changes: 2 additions & 2 deletions museum_map/server/api/rooms.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@


@router.get("/", response_model=list[RoomModel])
async def get_floors(
async def get_rooms(
dbsession: Annotated[AsyncSession, Depends(db_session)], rid: Annotated[list[int] | None, Query()] = None
):
"""Retrieve all floors."""
"""Retrieve rooms."""
query = (
select(Room)
.options(selectinload(Room.group))
Expand Down
Loading

0 comments on commit 7d75fd7

Please sign in to comment.