-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathweb.py
More file actions
44 lines (35 loc) · 1.34 KB
/
web.py
File metadata and controls
44 lines (35 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import json
import os
from app_config import flask_app, redis_conn,session
from models import ProfileModel
from sqlalchemy import func
@flask_app.route('/')
def index():
count = session.query(func.count(ProfileModel.id)).scalar()
return f"""
Database Registers: {count}
<a href='http://127.0.0.1:5000/georedis_profiles/33.7207/-116.21677/100/km'> REDIS REQUEST<a>
<a href='http://127.0.0.1:5000/postgis_profiles/33.7207/-116.21677/100/km'> POSTGIS REQUEST<a>
"""
# http://127.0.0.1:5000/georedis_profiles/33.7207/-116.21677/100/km
@flask_app.route('/georedis_profiles/<latitude>/<longitude>/<int:radius>/<unit>/')
def georedis_profiles(latitude, longitude, radius, unit):
results = redis_conn.georadius(
os.getenv("REDIS_GEOCACHE_NAME"),
float(longitude),
float(latitude),
radius,
unit=unit
)[0: 100]
return dict(results=list(map(lambda x: json.loads(x.decode("utf-8")), results))), 200
# http://127.0.0.1:5000/postgis_profiles/33.7207/-116.21677/100/km
@flask_app.route('/postgis_profiles/<latitude>/<longitude>/<int:radius>/<unit>/')
def postgis_profiles(latitude, longitude, radius, unit):
results = ProfileModel.geo_query(
float(latitude),
float(longitude),
radius,
unit,
limit=100
)
return dict(results=results), 200