Skip to content

Commit 552d623

Browse files
committed
🎨 refactor(Geostore): extract common code to find first matching geostore
1 parent 21e1cdf commit 552d623

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

app/crud/geostore.py

+16-17
Original file line numberDiff line numberDiff line change
@@ -201,14 +201,8 @@ async def get_gadm_geostore_id(
201201
) -> str:
202202
src_table = await get_versioned_dataset(admin_provider, admin_version)
203203
columns_etc: List[Column | Label] = [db.column("gfw_geostore_id"),]
204-
sql: Select = db.select(columns_etc).select_from(src_table)
205-
sql = await add_where_clauses(adm_level, admin_provider, admin_version, country_id, region_id, sql, subregion_id)
206-
row = await get_first_row(sql)
207-
if row is None:
208-
raise RecordNotFoundError(
209-
f"Admin boundary not found in {admin_provider} version {admin_version}"
210-
)
211-
204+
row = await _find_first_geostore(adm_level, admin_provider, admin_version, columns_etc, country_id, region_id,
205+
src_table, subregion_id)
212206
return await row.gfw_geostore_id
213207

214208

@@ -246,15 +240,8 @@ async def build_gadm_geostore(
246240
)
247241
)
248242

249-
sql: Select = db.select(columns_etc).select_from(src_table)
250-
251-
sql = await add_where_clauses(adm_level, admin_provider, admin_version, country_id, region_id, sql, subregion_id)
252-
253-
row = await get_first_row(sql)
254-
if row is None:
255-
raise RecordNotFoundError(
256-
f"Admin boundary not found in {admin_provider} version {admin_version}"
257-
)
243+
row = await _find_first_geostore(adm_level, admin_provider, admin_version, columns_etc, country_id, region_id,
244+
src_table, subregion_id)
258245

259246
if row.geojson is None:
260247
raise GeometryIsNullError(
@@ -274,6 +261,18 @@ async def build_gadm_geostore(
274261
)
275262

276263

264+
async def _find_first_geostore(adm_level, admin_provider, admin_version, columns_etc, country_id, region_id, src_table,
265+
subregion_id):
266+
sql: Select = db.select(columns_etc).select_from(src_table)
267+
sql = await add_where_clauses(adm_level, admin_provider, admin_version, country_id, region_id, sql, subregion_id)
268+
row = await get_first_row(sql)
269+
if row is None:
270+
raise RecordNotFoundError(
271+
f"Admin boundary not found in {admin_provider} version {admin_version}"
272+
)
273+
return row
274+
275+
277276
async def add_where_clauses(adm_level, admin_provider, admin_version, country_id, region_id, sql, subregion_id):
278277
where_clauses: List[TextClause] = [
279278
db.text("adm_level=:adm_level").bindparams(adm_level=str(adm_level))

0 commit comments

Comments
 (0)