Skip to content

Commit

Permalink
[#409] Short reference data by country name and handle no available data
Browse files Browse the repository at this point in the history
  • Loading branch information
wayangalihpratama committed Feb 21, 2025
1 parent 493b459 commit 286fea9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
19 changes: 15 additions & 4 deletions backend/db/crud_reference_data.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from sqlalchemy.orm import Session
from sqlalchemy.orm import Session, joinedload
from sqlalchemy import desc, func
from typing import Optional, List
from typing_extensions import TypedDict
Expand Down Expand Up @@ -29,14 +29,19 @@ def get_all_reference(
skip: int = 0,
limit: int = 10,
) -> List[ReferenceDataList]:
data = session.query(ReferenceData)
data = (
session.query(ReferenceData)
.join(Country)
.options(joinedload(ReferenceData.country_detail))
)

if country:
data = data.filter(ReferenceData.country == country)
if commodity:
data = data.filter(ReferenceData.commodity == commodity)
if source:
data = data.filter(
ReferenceData.source.ilike("%{}%".format(source.lower().strip()))
ReferenceData.source.ilike(f"%{source.lower().strip()}%")
)
if driver == Driver.area:
data = data.filter(ReferenceData.area.is_not(None))
Expand All @@ -48,10 +53,16 @@ def get_all_reference(
data = data.filter(ReferenceData.cost_of_production.is_not(None))
if driver == Driver.diversified_income:
data = data.filter(ReferenceData.diversified_income.is_not(None))

count = data.count()

data = (
data.order_by(ReferenceData.id.desc()).offset(skip).limit(limit).all()
data.order_by(Country.name.asc(), ReferenceData.id.desc())
.offset(skip)
.limit(limit)
.all()
)

return PaginatedReferenceData(count=count, data=data)


Expand Down
2 changes: 2 additions & 0 deletions frontend/src/pages/explore-studies/ExploreStudiesPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,8 @@ const ExploreStudiesPage = () => {

const onClickMap = ({ name: selectedCountry, value }) => {
if (isNaN(value)) {
// Show now data not available
setData(defData);
return;
}
const findMapData = mapData.find(
Expand Down

0 comments on commit 286fea9

Please # to comment.