diff --git a/server/apps/microservices/src/processors/metadata-extraction.processor.ts b/server/apps/microservices/src/processors/metadata-extraction.processor.ts index 27f2688d74..b247215d43 100644 --- a/server/apps/microservices/src/processors/metadata-extraction.processor.ts +++ b/server/apps/microservices/src/processors/metadata-extraction.processor.ts @@ -39,20 +39,20 @@ function geocoderLookup(points: { latitude: number; longitude: number }[]) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore geocoder.lookUp(points, 1, (err, addresses) => { - resolve(addresses[0][0]); + resolve(addresses[0][0] as GeoData); }); }); } const geocodingPrecisionLevels = ['cities15000', 'cities5000', 'cities1000', 'cities500']; -export interface AdminCode { +export type AdminCode = { name: string; asciiName: string; geoNameId: string; -} +}; -export interface GeoData { +export type GeoData = { geoNameId: string; name: string; asciiName: string; @@ -63,8 +63,8 @@ export interface GeoData { featureCode: string; countryCode: string; cc2?: any; - admin1Code?: AdminCode; - admin2Code?: AdminCode; + admin1Code?: AdminCode | string; + admin2Code?: AdminCode | string; admin3Code?: any; admin4Code?: any; population: string; @@ -73,7 +73,7 @@ export interface GeoData { timezone: string; modificationDate: string; distance: number; -} +}; @Processor(QueueNameEnum.METADATA_EXTRACTION) export class MetadataExtractionProcessor { @@ -123,10 +123,22 @@ export class MetadataExtractionProcessor { const city = geoCodeInfo.name; let state = ''; - if (geoCodeInfo.admin2Code?.name) state += geoCodeInfo.admin2Code.name; - if (geoCodeInfo.admin1Code?.name) { - if (geoCodeInfo.admin2Code?.name) state += ', '; - state += geoCodeInfo.admin1Code.name; + + if (geoCodeInfo.admin2Code) { + const adminCode2 = geoCodeInfo.admin2Code as AdminCode; + state += adminCode2.name; + } + + if (geoCodeInfo.admin1Code) { + const adminCode1 = geoCodeInfo.admin1Code as AdminCode; + + if (geoCodeInfo.admin2Code) { + const adminCode2 = geoCodeInfo.admin2Code as AdminCode; + if (adminCode2.name) { + state += ', '; + } + } + state += adminCode1.name; } return { country, state, city }; diff --git a/server/package-lock.json b/server/package-lock.json index 62ebb7fd08..9cb57e7d52 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -36,7 +36,7 @@ "geo-tz": "^7.0.2", "i18n-iso-countries": "^7.5.0", "joi": "^17.5.0", - "local-reverse-geocoder": "^0.12.2", + "local-reverse-geocoder": "^0.12.5", "lodash": "^4.17.21", "luxon": "^3.0.3", "passport": "^0.6.0", @@ -7661,12 +7661,11 @@ } }, "node_modules/local-reverse-geocoder": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.2.tgz", - "integrity": "sha512-kTSvDxGTuJoqx619jmHFoGCqFpBi0PPwyd7PDOLZCyo8mMEwJSMx713+ksOCihGpzUfO3hcclE7z/T43sY/IaA==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.5.tgz", + "integrity": "sha512-FaH8+T29K9PQRiiqYlt+M9Qvq9GlSnWEnX0FTDXgPrNzQ9SWWYGEvO5uODwAD6sep9z19u/K/+Z3cw4AGVW97Q==", "dependencies": { "async": "^3.2.4", - "cors": "^2.8.5", "csv-parse": "^5.3.0", "debug": "^4.3.4", "kdt": "^0.1.0", @@ -17109,12 +17108,11 @@ "dev": true }, "local-reverse-geocoder": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.2.tgz", - "integrity": "sha512-kTSvDxGTuJoqx619jmHFoGCqFpBi0PPwyd7PDOLZCyo8mMEwJSMx713+ksOCihGpzUfO3hcclE7z/T43sY/IaA==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.5.tgz", + "integrity": "sha512-FaH8+T29K9PQRiiqYlt+M9Qvq9GlSnWEnX0FTDXgPrNzQ9SWWYGEvO5uODwAD6sep9z19u/K/+Z3cw4AGVW97Q==", "requires": { "async": "^3.2.4", - "cors": "^2.8.5", "csv-parse": "^5.3.0", "debug": "^4.3.4", "kdt": "^0.1.0", diff --git a/server/package.json b/server/package.json index 62c113b7db..7d7f5ea2b2 100644 --- a/server/package.json +++ b/server/package.json @@ -55,7 +55,7 @@ "geo-tz": "^7.0.2", "i18n-iso-countries": "^7.5.0", "joi": "^17.5.0", - "local-reverse-geocoder": "^0.12.2", + "local-reverse-geocoder": "^0.12.5", "lodash": "^4.17.21", "luxon": "^3.0.3", "passport": "^0.6.0",