Skip to content

Commit 21d577a

Browse files
committed
dynamic geos and ranks
1 parent addc1f4 commit 21d577a

File tree

2 files changed

+24
-236
lines changed

2 files changed

+24
-236
lines changed

src/controllers/geosController.js

Lines changed: 12 additions & 224 deletions
Original file line numberDiff line numberDiff line change
@@ -1,234 +1,22 @@
1+
const firestore = require('../utils/db');
12
const { createSuccessResponse, createErrorResponse } = require('../utils/helpers');
23

3-
// GEOS/COUNTRIES data from the existing Python implementation
4-
// Note: Full list is shortened for brevity. In a real implementation, the complete list would be included.
5-
const COUNTRIES = [
6-
{"geo": "ALL", "num_origins": "9731427"},
7-
{"geo": "United States of America", "num_origins": "1707677"},
8-
{"geo": "India", "num_origins": "826143"},
9-
{"geo": "Japan", "num_origins": "690984"},
10-
{"geo": "Germany", "num_origins": "678201"},
11-
{"geo": "Brazil", "num_origins": "644760"},
12-
{
13-
"geo": "United Kingdom of Great Britain and Northern Ireland",
14-
"num_origins": "560753",
15-
},
16-
{"geo": "Russian Federation", "num_origins": "529803"},
17-
{"geo": "France", "num_origins": "515925"},
18-
{"geo": "Italy", "num_origins": "503015"},
19-
{"geo": "Spain", "num_origins": "459739"},
20-
{"geo": "Indonesia", "num_origins": "401253"},
21-
{"geo": "Poland", "num_origins": "350837"},
22-
{"geo": "Canada", "num_origins": "335548"},
23-
{"geo": "Mexico", "num_origins": "317337"},
24-
{"geo": "Turkey", "num_origins": "292310"},
25-
{"geo": "Netherlands", "num_origins": "291785"},
26-
{"geo": "Argentina", "num_origins": "252487"},
27-
{"geo": "Australia", "num_origins": "215909"},
28-
{"geo": "Korea, Republic of", "num_origins": "209013"},
29-
{"geo": "Philippines", "num_origins": "204637"},
30-
{"geo": "Colombia", "num_origins": "198020"},
31-
{"geo": "Malaysia", "num_origins": "193444"},
32-
{"geo": "Ukraine", "num_origins": "189866"},
33-
{"geo": "Viet Nam", "num_origins": "176473"},
34-
{"geo": "Thailand", "num_origins": "167337"},
35-
{"geo": "Pakistan", "num_origins": "157400"},
36-
{"geo": "Belgium", "num_origins": "157266"},
37-
{"geo": "South Africa", "num_origins": "150004"},
38-
{"geo": "Czechia", "num_origins": "148638"},
39-
{"geo": "Romania", "num_origins": "148176"},
40-
{"geo": "Taiwan, Province of China", "num_origins": "147383"},
41-
{"geo": "Chile", "num_origins": "144592"},
42-
{"geo": "Greece", "num_origins": "135996"},
43-
{"geo": "Austria", "num_origins": "135821"},
44-
{"geo": "Bangladesh", "num_origins": "134081"},
45-
{"geo": "Peru", "num_origins": "124954"},
46-
{"geo": "Iran (Islamic Republic of)", "num_origins": "122949"},
47-
{"geo": "Singapore", "num_origins": "121397"},
48-
{"geo": "Egypt", "num_origins": "119105"},
49-
{"geo": "Hungary", "num_origins": "117857"},
50-
{"geo": "Nigeria", "num_origins": "115407"},
51-
{"geo": "Portugal", "num_origins": "113035"},
52-
{"geo": "Kazakhstan", "num_origins": "111471"},
53-
{"geo": "Belarus", "num_origins": "109161"},
54-
{"geo": "Sweden", "num_origins": "108230"},
55-
{"geo": "Switzerland", "num_origins": "106121"},
56-
{"geo": "Saudi Arabia", "num_origins": "100966"},
57-
{"geo": "Israel", "num_origins": "99539"},
58-
{"geo": "Algeria", "num_origins": "98160"},
59-
{"geo": "Morocco", "num_origins": "96973"},
60-
{"geo": "Ireland", "num_origins": "96613"},
61-
{"geo": "Hong Kong", "num_origins": "95717"},
62-
{"geo": "United Arab Emirates", "num_origins": "91116"},
63-
{"geo": "Croatia", "num_origins": "85514"},
64-
{"geo": "Venezuela (Bolivarian Republic of)", "num_origins": "84283"},
65-
{"geo": "Slovakia", "num_origins": "84177"},
66-
{"geo": "Finland", "num_origins": "83107"},
67-
{"geo": "Serbia", "num_origins": "80789"},
68-
{"geo": "Ecuador", "num_origins": "80083"},
69-
{"geo": "Bulgaria", "num_origins": "75818"},
70-
{"geo": "Denmark", "num_origins": "69550"},
71-
{"geo": "New Zealand", "num_origins": "68444"},
72-
{"geo": "Uzbekistan", "num_origins": "65735"},
73-
{"geo": "Iraq", "num_origins": "65305"},
74-
{"geo": "Kenya", "num_origins": "62330"},
75-
{"geo": "Nepal", "num_origins": "60371"},
76-
{"geo": "Norway", "num_origins": "58300"},
77-
{"geo": "China", "num_origins": "57495"},
78-
{"geo": "Bolivia (Plurinational State of)", "num_origins": "55245"},
79-
{"geo": "Tunisia", "num_origins": "54813"},
80-
{"geo": "Sri Lanka", "num_origins": "53879"},
81-
{"geo": "Guatemala", "num_origins": "50897"},
82-
{"geo": "Azerbaijan", "num_origins": "46317"},
83-
{"geo": "Kyrgyzstan", "num_origins": "45478"},
84-
{"geo": "Lithuania", "num_origins": "45215"},
85-
{"geo": "Costa Rica", "num_origins": "44736"},
86-
{"geo": "Dominican Republic", "num_origins": "42618"},
87-
{"geo": "Moldova, Republic of", "num_origins": "41976"},
88-
{"geo": "Bosnia and Herzegovina", "num_origins": "41953"},
89-
{"geo": "Jordan", "num_origins": "41773"},
90-
{"geo": "Uruguay", "num_origins": "41139"},
91-
{"geo": "Panama", "num_origins": "38437"},
92-
{"geo": "Slovenia", "num_origins": "36027"},
93-
{"geo": "Ghana", "num_origins": "35980"},
94-
{"geo": "Paraguay", "num_origins": "35415"},
95-
{"geo": "Georgia", "num_origins": "34921"},
96-
{"geo": "Qatar", "num_origins": "34403"},
97-
{"geo": "Lebanon", "num_origins": "33694"},
98-
{"geo": "Puerto Rico", "num_origins": "33617"},
99-
{"geo": "El Salvador", "num_origins": "31654"},
100-
{"geo": "Syrian Arab Republic", "num_origins": "30714"},
101-
{"geo": "Latvia", "num_origins": "30530"},
102-
{"geo": "Honduras", "num_origins": "29712"},
103-
{"geo": "Myanmar", "num_origins": "29348"},
104-
{"geo": "Cyprus", "num_origins": "29012"},
105-
{"geo": "Oman", "num_origins": "27345"},
106-
{"geo": "Tanzania, United Republic of", "num_origins": "27335"},
107-
{"geo": "Cameroon", "num_origins": "26828"},
108-
{"geo": "Kuwait", "num_origins": "26458"},
109-
{"geo": "Armenia", "num_origins": "26355"},
110-
{"geo": "Nicaragua", "num_origins": "26015"},
111-
{"geo": "Estonia", "num_origins": "25576"},
112-
{"geo": "Côte d'Ivoire", "num_origins": "25208"},
113-
{"geo": "Cambodia", "num_origins": "24593"},
114-
{"geo": "Uganda", "num_origins": "24532"},
115-
{"geo": "Libya", "num_origins": "23730"},
116-
{"geo": "Cuba", "num_origins": "23056"},
117-
{"geo": "Ethiopia", "num_origins": "22650"},
118-
{"geo": "Albania", "num_origins": "22445"},
119-
{"geo": "Yemen", "num_origins": "22186"},
120-
{"geo": "North Macedonia", "num_origins": "21259"},
121-
{"geo": "Palestine, State of", "num_origins": "20468"},
122-
{"geo": "Senegal", "num_origins": "20323"},
123-
{"geo": "Montenegro", "num_origins": "20212"},
124-
{"geo": "Sudan", "num_origins": "20152"},
125-
{"geo": "Jamaica", "num_origins": "18847"},
126-
{"geo": "Iceland", "num_origins": "18261"},
127-
{"geo": "Zambia", "num_origins": "17567"},
128-
{"geo": "Bahrain", "num_origins": "17522"},
129-
{"geo": "Réunion", "num_origins": "17251"},
130-
{"geo": "Trinidad and Tobago", "num_origins": "16445"},
131-
{"geo": "Mauritius", "num_origins": "16238"},
132-
{"geo": "Zimbabwe", "num_origins": "15515"},
133-
{"geo": "Tajikistan", "num_origins": "14835"},
134-
{"geo": "Lao People's Democratic Republic", "num_origins": "14796"},
135-
{"geo": "Luxembourg", "num_origins": "14647"},
136-
{"geo": "Congo, Democratic Republic of the", "num_origins": "14545"},
137-
{"geo": "Angola", "num_origins": "13428"},
138-
{"geo": "Haiti", "num_origins": "13083"},
139-
{"geo": "Malta", "num_origins": "12984"},
140-
{"geo": "Mozambique", "num_origins": "12706"},
141-
{"geo": "Mongolia", "num_origins": "12574"},
142-
{"geo": "Burkina Faso", "num_origins": "12325"},
143-
{"geo": "Benin", "num_origins": "12292"},
144-
{"geo": "Somalia", "num_origins": "12176"},
145-
{"geo": "Mali", "num_origins": "10834"},
146-
{"geo": "Turkmenistan", "num_origins": "10192"},
147-
{"geo": "Afghanistan", "num_origins": "9613"},
148-
{"geo": "Martinique", "num_origins": "9314"},
149-
{"geo": "Guadeloupe", "num_origins": "8961"},
150-
{"geo": "Brunei Darussalam", "num_origins": "8854"},
151-
{"geo": "Botswana", "num_origins": "8657"},
152-
{"geo": "Namibia", "num_origins": "8535"},
153-
{"geo": "Papua New Guinea", "num_origins": "8447"},
154-
{"geo": "Togo", "num_origins": "8308"},
155-
{"geo": "Malawi", "num_origins": "8305"},
156-
{"geo": "Maldives", "num_origins": "8262"},
157-
{"geo": "Kosovo", "num_origins": "7807"},
158-
{"geo": "Gabon", "num_origins": "7754"},
159-
{"geo": "Bhutan", "num_origins": "6919"},
160-
{"geo": "Guinea", "num_origins": "6702"},
161-
{"geo": "Madagascar", "num_origins": "6620"},
162-
{"geo": "Guyana", "num_origins": "6303"},
163-
{"geo": "Rwanda", "num_origins": "6129"},
164-
{"geo": "Mauritania", "num_origins": "5995"},
165-
{"geo": "Macao", "num_origins": "5889"},
166-
{"geo": "Suriname", "num_origins": "5827"},
167-
{"geo": "Niger", "num_origins": "5484"},
168-
{"geo": "Fiji", "num_origins": "5388"},
169-
{"geo": "Congo", "num_origins": "4697"},
170-
{"geo": "Barbados", "num_origins": "4509"},
171-
{"geo": "Bahamas", "num_origins": "4467"},
172-
{"geo": "Chad", "num_origins": "4426"},
173-
{"geo": "Sierra Leone", "num_origins": "4345"},
174-
{"geo": "Cabo Verde", "num_origins": "4125"},
175-
{"geo": "Liberia", "num_origins": "3899"},
176-
{"geo": "Belize", "num_origins": "3871"},
177-
{"geo": "French Guiana", "num_origins": "3603"},
178-
{"geo": "Eswatini", "num_origins": "3554"},
179-
{"geo": "French Polynesia", "num_origins": "3489"},
180-
{"geo": "New Caledonia", "num_origins": "3379"},
181-
{"geo": "Lesotho", "num_origins": "3265"},
182-
{"geo": "Gambia", "num_origins": "3217"},
183-
{"geo": "Timor-Leste", "num_origins": "3074"},
184-
{"geo": "Andorra", "num_origins": "3073"},
185-
{"geo": "South Sudan", "num_origins": "3040"},
186-
{"geo": "Curaçao", "num_origins": "2987"},
187-
{"geo": "Western Sahara", "num_origins": "2739"},
188-
{"geo": "Saint Lucia", "num_origins": "2493"},
189-
{"geo": "Guam", "num_origins": "2466"},
190-
{"geo": "Antigua and Barbuda", "num_origins": "2449"},
191-
{"geo": "Aruba", "num_origins": "2420"},
192-
{"geo": "Djibouti", "num_origins": "2395"},
193-
{"geo": "Burundi", "num_origins": "2301"},
194-
{"geo": "Seychelles", "num_origins": "2007"},
195-
{"geo": "Mayotte", "num_origins": "1820"},
196-
{"geo": "Grenada", "num_origins": "1597"},
197-
{"geo": "Guinea-Bissau", "num_origins": "1592"},
198-
{"geo": "Comoros", "num_origins": "1563"},
199-
{"geo": "Cayman Islands", "num_origins": "1549"},
200-
{"geo": "Jersey", "num_origins": "1499"},
201-
{"geo": "Saint Vincent and the Grenadines", "num_origins": "1453"},
202-
{"geo": "Isle of Man", "num_origins": "1374"},
203-
{"geo": "Faroe Islands", "num_origins": "1233"},
204-
{"geo": "Equatorial Guinea", "num_origins": "1218"},
205-
{"geo": "Virgin Islands (U.S.)", "num_origins": "1074"},
206-
{"geo": "Dominica", "num_origins": "1049"},
207-
{"geo": "Sint Maarten (Dutch part)", "num_origins": "952"},
208-
{"geo": "Solomon Islands", "num_origins": "946"},
209-
{"geo": "Guernsey", "num_origins": "936"},
210-
{"geo": "Saint Kitts and Nevis", "num_origins": "917"},
211-
{"geo": "Central African Republic", "num_origins": "879"},
212-
{"geo": "Virgin Islands (British)", "num_origins": "864"},
213-
{"geo": "San Marino", "num_origins": "845"},
214-
{"geo": "Bermuda", "num_origins": "796"},
215-
{"geo": "Samoa", "num_origins": "771"},
216-
{"geo": "Gibraltar", "num_origins": "710"},
217-
{"geo": "Vanuatu", "num_origins": "697"},
218-
{"geo": "Saint Martin (French part)", "num_origins": "642"},
219-
{"geo": "Greenland", "num_origins": "631"},
220-
{"geo": "Bonaire, Sint Eustatius and Saba", "num_origins": "615"},
221-
{"geo": "Marshall Islands", "num_origins": "604"},
222-
{"geo": "Turks and Caicos Islands", "num_origins": "548"},
223-
];
224-
2254
/**
226-
* List all geographic locations
5+
* List all geographic locations from database
2276
*/
2287
const listGeos = async (req, res) => {
2298
try {
9+
const snapshot = await firestore.collection('geos').orderBy('mobile_origins', 'desc').get();
10+
const data = [];
11+
12+
// Extract only the 'geo' property from each document
13+
snapshot.forEach(doc => {
14+
const docData = doc.data();
15+
data.push({ geo: docData.geo });
16+
});
17+
23018
res.statusCode = 200;
231-
res.end(JSON.stringify(createSuccessResponse(COUNTRIES)));
19+
res.end(JSON.stringify(createSuccessResponse(data)));
23220
} catch (error) {
23321
console.error('Error fetching geographic locations:', error);
23422
res.statusCode = 400;

src/controllers/ranksController.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1+
const firestore = require('../utils/db');
12
const { createSuccessResponse, createErrorResponse } = require('../utils/helpers');
23

3-
// Ranks data from the existing Python implementation
4-
const RANKS = [
5-
{"num_origins": "9731427", "rank": "ALL"},
6-
{"num_origins": "7232806", "rank": "Top 10M"},
7-
{"num_origins": "881817", "rank": "Top 1M"},
8-
{"num_origins": "91410", "rank": "Top 100k"},
9-
{"num_origins": "9524", "rank": "Top 10k"},
10-
{"num_origins": "965", "rank": "Top 1k"},
11-
];
12-
134
/**
14-
* List all rank options
5+
* List all rank options from database
156
*/
167
const listRanks = async (req, res) => {
178
try {
9+
const snapshot = await firestore.collection('ranks').orderBy('mobile_origins', 'desc').get();
10+
const data = [];
11+
12+
// Extract only the 'rank' property from each document
13+
snapshot.forEach(doc => {
14+
const docData = doc.data();
15+
data.push({ rank: docData.rank });
16+
});
17+
1818
res.statusCode = 200;
19-
res.end(JSON.stringify(createSuccessResponse(RANKS)));
19+
res.end(JSON.stringify(createSuccessResponse(data)));
2020
} catch (error) {
2121
console.error('Error fetching ranks:', error);
2222
res.statusCode = 400;

0 commit comments

Comments
 (0)