feat(api): changed main sessions' search&count logic
feat(DB): new index
This commit is contained in:
parent
7d55e9d0da
commit
1ea681269b
4 changed files with 34 additions and 16 deletions
|
|
@ -562,29 +562,40 @@ def search2_pg(data: schemas.SessionsSearchPayloadSchema, project_id, user_id, f
|
|||
{query_part};""",
|
||||
full_args)
|
||||
else:
|
||||
main_query = cur.mogrify(f"""SELECT * FROM
|
||||
(SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS}
|
||||
{query_part}
|
||||
ORDER BY s.session_id desc) AS filtred_sessions
|
||||
ORDER BY favorite DESC, issue_score DESC, {sort} {order};""",
|
||||
main_query = cur.mogrify(f"""SELECT COUNT(full_sessions) AS count, JSONB_AGG(full_sessions) FILTER (WHERE rn <= 200) AS sessions
|
||||
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY favorite DESC, issue_score DESC, session_id desc, start_ts desc) AS rn FROM
|
||||
(SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS}
|
||||
{query_part}
|
||||
ORDER BY s.session_id desc) AS filtred_sessions
|
||||
ORDER BY favorite DESC, issue_score DESC, {sort} {order}) AS full_sessions;""",
|
||||
full_args)
|
||||
|
||||
# main_query = cur.mogrify(f"""SELECT * FROM
|
||||
# (SELECT DISTINCT ON(s.session_id) {SESSION_PROJECTION_COLS}
|
||||
# {query_part}
|
||||
# ORDER BY s.session_id desc) AS filtred_sessions
|
||||
# ORDER BY favorite DESC, issue_score DESC, {sort} {order};""",
|
||||
# full_args)
|
||||
|
||||
print("--------------------")
|
||||
print(main_query)
|
||||
|
||||
cur.execute(main_query)
|
||||
|
||||
print("Executed--------------------")
|
||||
if count_only:
|
||||
return helper.dict_to_camel_case(cur.fetchone())
|
||||
sessions = []
|
||||
total = cur.rowcount
|
||||
row = cur.fetchone()
|
||||
limit = 200
|
||||
while row is not None and len(sessions) < limit:
|
||||
if row.get("favorite"):
|
||||
limit += 1
|
||||
sessions.append(row)
|
||||
row = cur.fetchone()
|
||||
sessions = cur.fetchone()
|
||||
total = sessions["count"]
|
||||
sessions = sessions["sessions"]
|
||||
# sessions = []
|
||||
# total = cur.rowcount
|
||||
# row = cur.fetchone()
|
||||
# limit = 200
|
||||
# while row is not None and len(sessions) < limit:
|
||||
# if row.get("favorite"):
|
||||
# limit += 1
|
||||
# sessions.append(row)
|
||||
# row = cur.fetchone()
|
||||
|
||||
if errors_only:
|
||||
return sessions
|
||||
|
|
|
|||
|
|
@ -15,4 +15,6 @@ CREATE TABLE traces
|
|||
);
|
||||
CREATE INDEX traces_user_id_idx ON traces (user_id);
|
||||
CREATE INDEX traces_tenant_id_idx ON traces (tenant_id);
|
||||
|
||||
CREATE INDEX user_favorite_sessions_user_id_session_id_idx ON user_favorite_sessions(user_id,session_id);
|
||||
COMMIT;
|
||||
5
scripts/helm/db/init_dbs/postgresql/1.5.0/1.5.0.sql
Normal file
5
scripts/helm/db/init_dbs/postgresql/1.5.0/1.5.0.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
BEGIN;
|
||||
|
||||
CREATE INDEX user_favorite_sessions_user_id_session_id_idx ON user_favorite_sessions (user_id, session_id);
|
||||
|
||||
END;
|
||||
|
|
@ -598,7 +598,7 @@ $$
|
|||
session_id bigint NOT NULL REFERENCES sessions (session_id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (user_id, session_id)
|
||||
);
|
||||
|
||||
CREATE INDEX user_favorite_sessions_user_id_session_id_idx ON user_favorite_sessions (user_id, session_id);
|
||||
|
||||
-- --- assignments.sql ---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue