Skip to content

Commit

Permalink
Merge pull request #60 from observerly/feature/api/orderByType
Browse files Browse the repository at this point in the history
feat: Added perform_order_by_type() call to crud_body.py.
  • Loading branch information
michealroberts authored Sep 2, 2022
2 parents 7f76f0a + 9ae7c76 commit e88695a
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 11 deletions.
27 changes: 26 additions & 1 deletion app/crud/crud_body.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel
from sqlalchemy import or_
from sqlalchemy import case, or_
from sqlalchemy.orm import Query, Session
from sqlalchemy.sql import func

Expand Down Expand Up @@ -133,13 +133,38 @@ def perform_constellation_search_filter(

return query

def perform_order_by_type(self, query: Query) -> Query:
whens = {
"Other": 4,
"*": 3,
"**": 3,
"*Ass": 3,
"OCl": 2,
"GCl": 2,
"G": 1,
"Cl+N": 0,
"PN": 0,
"HII": 0,
"DrkN": 0,
"EmN": 0,
"Neb": 0,
"RfN": 0,
"SNR": 0,
}

sort = case(value=Body.type, whens=whens).label("type")

return query.order_by(sort)

def get_multi(
self, db: Session, *, query_params: QueryParams, skip: int = 0, limit: int = 100
) -> Tuple[List[ModelType], int]:
query = db.query(self.model)
# Filter w/Query Params:
query = self.get_filter_query(query, query_params)

query = self.perform_order_by_type(query)

count = query.count()

# Here we are ordering by apparent magnitude (mag) in descending order because
Expand Down
30 changes: 20 additions & 10 deletions app/tests/api/api_v1/test_bodies.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,16 +161,26 @@ async def test_list_bodies_within_the_constellation_orion(client: AsyncClient) -
assert body["previous_page"] is None
assert len(body["results"]) == 20

assert body["results"][1]["name"] == "α Orionis"
assert body["results"][0]["name"] == "β Orionis"
assert body["results"][2]["name"] == "γ Orionis"
assert body["results"][6]["name"] == "δ Orionis"
assert body["results"][3]["name"] == "ε Orionis"
assert body["results"][4]["name"] == "ζ Orionis"
assert body["results"][7]["name"] == "ι Orionis"
assert body["results"][5]["name"] == "κ Orionis"
assert body["results"][8]["name"] == "π³ Orionis"
assert body["results"][9]["name"] == "η Orionis"
assert body["results"][0]["name"] == "Great Orion Nebula"
assert body["results"][1]["name"] == "Casper the Friendly Ghost Nebula"
assert body["results"][2]["name"] == "Da Mairan's Nebula"
assert body["results"][3]["name"] == "β Orionis"
assert body["results"][4]["name"] == "α Orionis"
assert body["results"][5]["name"] == "γ Orionis"
assert body["results"][9]["name"] == "δ Orionis"
assert body["results"][6]["name"] == "ε Orionis"
assert body["results"][7]["name"] == "ζ Orionis"
assert body["results"][10]["name"] == "ι Orionis"
assert body["results"][8]["name"] == "κ Orionis"
assert body["results"][11]["name"] == "π³ Orionis"
assert body["results"][12]["name"] == "η Orionis"
assert body["results"][13]["name"] == "λ Orionis"
assert body["results"][14]["name"] == "τ Orionis"
assert body["results"][15]["name"] == "π⁴ Orionis"
assert body["results"][16]["name"] == "ζ Orionis"
assert body["results"][17]["name"] == "π⁵ Orionis"
assert body["results"][18]["name"] == "σ Orionis"
assert body["results"][19]["name"] == "ο² Orionis"


@pytest.mark.asyncio
Expand Down

0 comments on commit e88695a

Please sign in to comment.