diff --git a/api/chalicelib/core/weekly_report.py b/api/chalicelib/core/weekly_report.py index bebdd9f6e..88e785b94 100644 --- a/api/chalicelib/core/weekly_report.py +++ b/api/chalicelib/core/weekly_report.py @@ -33,7 +33,8 @@ def cron(): print("!!! No SMTP configuration found, ignoring weekly report") return with pg_client.PostgresClient(long_query=True) as cur: - params = {"3_days_ago": TimeUTC.midnight(delta_days=-3), + params = {"tomorrow": TimeUTC.midnight(delta_days=1), + "3_days_ago": TimeUTC.midnight(delta_days=-3), "1_week_ago": TimeUTC.midnight(delta_days=-7), "2_week_ago": TimeUTC.midnight(delta_days=-14), "5_week_ago": TimeUTC.midnight(delta_days=-35)} @@ -46,18 +47,18 @@ def cron(): COALESCE(week_0_issues.count, 0) AS this_week_issues_count, COALESCE(week_1_issues.count, 0) AS past_week_issues_count, COALESCE(month_1_issues.count, 0) AS past_month_issues_count - FROM public.projects + FROM (SELECT project_id, name FROM public.projects WHERE projects.deleted_at ISNULL) AS projects INNER JOIN LATERAL ( SELECT sessions.project_id FROM public.sessions WHERE sessions.project_id = projects.project_id AND start_ts >= %(3_days_ago)s + AND start_ts < %(tomorrow)s LIMIT 1) AS recently_active USING (project_id) INNER JOIN LATERAL ( SELECT COALESCE(ARRAY_AGG(email), '{}') AS emails FROM public.users - WHERE users.tenant_id = projects.tenant_id - AND users.deleted_at ISNULL + WHERE users.deleted_at ISNULL AND users.weekly_report ) AS users ON (TRUE) LEFT JOIN LATERAL ( @@ -66,6 +67,7 @@ def cron(): INNER JOIN public.sessions USING (session_id) WHERE sessions.project_id = projects.project_id AND issues.timestamp >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT + AND issues.timestamp < %(tomorrow)s ) AS week_0_issues ON (TRUE) LEFT JOIN LATERAL ( SELECT COUNT(1) AS count @@ -82,8 +84,7 @@ def cron(): WHERE sessions.project_id = projects.project_id AND issues.timestamp <= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '1 week') * 1000)::BIGINT AND issues.timestamp >= (EXTRACT(EPOCH FROM DATE_TRUNC('day', now()) - INTERVAL '5 week') * 1000)::BIGINT - ) AS month_1_issues ON (TRUE) - WHERE projects.deleted_at ISNULL;"""), params) + ) AS month_1_issues ON (TRUE);"""), params) projects_data = cur.fetchall() emails_to_send = [] for p in projects_data: diff --git a/ee/api/.gitignore b/ee/api/.gitignore index fb839d5e6..a0bd649f3 100644 --- a/ee/api/.gitignore +++ b/ee/api/.gitignore @@ -214,7 +214,6 @@ Pipfile /chalicelib/core/socket_ios.py /chalicelib/core/sourcemaps.py /chalicelib/core/sourcemaps_parser.py -/chalicelib/core/weekly_report.py /chalicelib/saml /chalicelib/utils/html/ /chalicelib/utils/__init__.py diff --git a/ee/api/clean.sh b/ee/api/clean.sh index 861d1d9f1..549228366 100755 --- a/ee/api/clean.sh +++ b/ee/api/clean.sh @@ -38,7 +38,6 @@ rm -rf ./chalicelib/core/slack.py rm -rf ./chalicelib/core/socket_ios.py rm -rf ./chalicelib/core/sourcemaps.py rm -rf ./chalicelib/core/sourcemaps_parser.py -rm -rf ./chalicelib/core/weekly_report.py rm -rf ./chalicelib/saml rm -rf ./chalicelib/utils/html/ rm -rf ./chalicelib/utils/__init__.py diff --git a/ee/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql b/ee/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql index 6569ef682..7b5169c3c 100644 --- a/ee/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql +++ b/ee/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql @@ -51,6 +51,7 @@ $$ $$; COMMIT; +CREATE INDEX CONCURRENTLY IF NOT EXISTS projects_project_id_deleted_at_n_idx ON public.projects (project_id) WHERE deleted_at IS NULL; ALTER TYPE metric_type ADD VALUE IF NOT EXISTS 'funnel'; INSERT INTO metrics (name, category, default_config, is_predefined, is_template, is_public, predefined_key, metric_type, diff --git a/ee/scripts/helm/db/init_dbs/postgresql/init_schema.sql b/ee/scripts/helm/db/init_dbs/postgresql/init_schema.sql index 50cd912fa..76ed78d87 100644 --- a/ee/scripts/helm/db/init_dbs/postgresql/init_schema.sql +++ b/ee/scripts/helm/db/init_dbs/postgresql/init_schema.sql @@ -258,6 +258,7 @@ $$ CREATE INDEX IF NOT EXISTS projects_project_key_idx ON public.projects (project_key); + CREATE INDEX IF NOT EXISTS projects_project_id_deleted_at_n_idx ON public.projects (project_id) WHERE deleted_at IS NULL; DROP TRIGGER IF EXISTS on_insert_or_update ON projects; CREATE TRIGGER on_insert_or_update AFTER INSERT OR UPDATE diff --git a/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql b/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql index 8f07edf0f..00bf4ec1d 100644 --- a/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql +++ b/scripts/helm/db/init_dbs/postgresql/1.7.0/1.7.0.sql @@ -38,7 +38,7 @@ $$ $$; COMMIT; - +CREATE INDEX CONCURRENTLY IF NOT EXISTS projects_project_id_deleted_at_n_idx ON public.projects (project_id) WHERE deleted_at IS NULL; ALTER TYPE metric_type ADD VALUE IF NOT EXISTS 'predefined'; INSERT INTO metrics (name, category, default_config, is_predefined, is_template, is_public, predefined_key, metric_type, diff --git a/scripts/helm/db/init_dbs/postgresql/init_schema.sql b/scripts/helm/db/init_dbs/postgresql/init_schema.sql index b26483e9b..f06ff4f9a 100644 --- a/scripts/helm/db/init_dbs/postgresql/init_schema.sql +++ b/scripts/helm/db/init_dbs/postgresql/init_schema.sql @@ -201,6 +201,8 @@ $$ ); CREATE INDEX projects_project_key_idx ON public.projects (project_key); + CREATE INDEX projects_project_id_deleted_at_n_idx ON public.projects (project_id) WHERE deleted_at IS NULL; + CREATE TRIGGER on_insert_or_update AFTER INSERT OR UPDATE ON projects