Api heatmaps (#99)
* feta(api): heatmaps by url * feta(db): delta and indexes for heatmaps by url
This commit is contained in:
parent
8a709e22fe
commit
03919c23af
6 changed files with 59 additions and 1 deletions
|
|
@ -11,7 +11,7 @@ from chalicelib.core import log_tool_rollbar, sourcemaps, events, sessions_assig
|
|||
log_tool_stackdriver, reset_password, sessions_favorite_viewed, \
|
||||
log_tool_cloudwatch, log_tool_sentry, log_tool_sumologic, log_tools, errors, sessions, \
|
||||
log_tool_newrelic, announcements, log_tool_bugsnag, weekly_report, integration_jira_cloud, integration_github, \
|
||||
assist
|
||||
assist, heatmaps
|
||||
from chalicelib.core.collaboration_slack import Slack
|
||||
from chalicelib.utils import email_helper
|
||||
|
||||
|
|
@ -882,3 +882,9 @@ def removed_endpoints(projectId=None, context=None):
|
|||
def sessions_live(projectId, context):
|
||||
data = assist.get_live_sessions(projectId)
|
||||
return {'data': data}
|
||||
|
||||
|
||||
@app.route('/{projectId}/heatmaps/url', methods=['POST'])
|
||||
def get_heatmaps_by_url(projectId, context):
|
||||
data = app.current_request.json_body
|
||||
return {"data": heatmaps.get_by_url(project_id=projectId, data=data)}
|
||||
|
|
|
|||
30
api/chalicelib/core/heatmaps.py
Normal file
30
api/chalicelib/core/heatmaps.py
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
from chalicelib.utils.TimeUTC import TimeUTC
|
||||
from chalicelib.utils import helper, pg_client
|
||||
from chalicelib.utils import dev
|
||||
|
||||
|
||||
@dev.timed
|
||||
def get_by_url(project_id, data):
|
||||
args = {"startDate": data.get('startDate', TimeUTC.now(delta_days=-30)),
|
||||
"endDate": data.get('endDate', TimeUTC.now()),
|
||||
"projectId": project_id, "url": data["url"]}
|
||||
|
||||
with pg_client.PostgresClient() as cur:
|
||||
query = cur.mogrify("""SELECT selector, count(1) AS count
|
||||
FROM events.clicks
|
||||
INNER JOIN sessions USING (session_id)
|
||||
WHERE project_id = 1
|
||||
AND url = %(url)s
|
||||
AND timestamp >= %(startDate)s
|
||||
AND timestamp <= %(endDate)s
|
||||
AND start_ts >= %(startDate)s
|
||||
AND start_ts <= %(endDate)s
|
||||
AND duration IS NOT NULL
|
||||
GROUP BY selector;""",
|
||||
args)
|
||||
|
||||
cur.execute(
|
||||
query
|
||||
)
|
||||
rows = cur.fetchall()
|
||||
return helper.dict_to_camel_case(rows)
|
||||
7
ee/scripts/helm/db/init_dbs/postgresql/1.3.0/1.3.0.sql
Normal file
7
ee/scripts/helm/db/init_dbs/postgresql/1.3.0/1.3.0.sql
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
BEGIN ;
|
||||
|
||||
CREATE INDEX clicks_url_idx ON events.clicks (url);
|
||||
CREATE INDEX clicks_url_gin_idx ON events.clicks USING GIN (url gin_trgm_ops);
|
||||
CREATE INDEX clicks_url_session_id_timestamp_selector_idx ON events.clicks (url, session_id, timestamp,selector);
|
||||
|
||||
COMMIT ;
|
||||
|
|
@ -691,6 +691,10 @@ CREATE INDEX ON events.clicks (session_id);
|
|||
CREATE INDEX ON events.clicks (label);
|
||||
CREATE INDEX clicks_label_gin_idx ON events.clicks USING GIN (label gin_trgm_ops);
|
||||
CREATE INDEX ON events.clicks (timestamp);
|
||||
CREATE INDEX clicks_url_idx ON events.clicks (url);
|
||||
CREATE INDEX clicks_url_gin_idx ON events.clicks USING GIN (url gin_trgm_ops);
|
||||
CREATE INDEX clicks_url_session_id_timestamp_selector_idx ON events.clicks (url, session_id, timestamp,selector);
|
||||
|
||||
|
||||
CREATE TABLE events.inputs
|
||||
(
|
||||
|
|
|
|||
7
scripts/helm/db/init_dbs/postgresql/1.3.0/1.3.0.sql
Normal file
7
scripts/helm/db/init_dbs/postgresql/1.3.0/1.3.0.sql
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
BEGIN ;
|
||||
|
||||
CREATE INDEX clicks_url_idx ON events.clicks (url);
|
||||
CREATE INDEX clicks_url_gin_idx ON events.clicks USING GIN (url gin_trgm_ops);
|
||||
CREATE INDEX clicks_url_session_id_timestamp_selector_idx ON events.clicks (url, session_id, timestamp,selector);
|
||||
|
||||
COMMIT ;
|
||||
|
|
@ -686,6 +686,10 @@ CREATE INDEX ON events.clicks (session_id);
|
|||
CREATE INDEX ON events.clicks (label);
|
||||
CREATE INDEX clicks_label_gin_idx ON events.clicks USING GIN (label gin_trgm_ops);
|
||||
CREATE INDEX ON events.clicks (timestamp);
|
||||
CREATE INDEX clicks_url_idx ON events.clicks (url);
|
||||
CREATE INDEX clicks_url_gin_idx ON events.clicks USING GIN (url gin_trgm_ops);
|
||||
CREATE INDEX clicks_url_session_id_timestamp_selector_idx ON events.clicks (url, session_id, timestamp,selector);
|
||||
|
||||
|
||||
CREATE TABLE events.inputs
|
||||
(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue