Open codisart opened 2 years ago
global_search_results
WITH searchable_simulated_spacecrafts AS (
SELECT satellites.user_id,
'simulated_spacecraft'::text AS category,
satellites.name AS searchable,
satellites.updated_at,
json_build_object('id', satellites.id, 'name', satellites.name) AS details
FROM satellites
), searchable_space_objects AS (
SELECT NULL::integer AS user_id,
'space_object'::text AS category,
space_objects.name AS searchable,
space_objects.updated_at,
json_build_object('id', space_objects.id, 'name', space_objects.name, 'catalog_number', space_objects.catalog_number, 'international_designator', space_objects.international_designator) AS details
FROM space_objects
), trackers_sub_query AS (
SELECT alerts.user_id,
alerts.name,
alerts.updated_at,
alerts.id,
alerts.object_id AS space_object_id,
space_objects.name AS space_object_name
FROM (alerts
JOIN space_objects ON ((space_objects.id = alerts.object_id)))
WHERE (((alerts.object_type)::text = 'SpaceObject'::text) AND (alerts.deleted_at IS NULL) AND (alerts.archived_at IS NULL))
), searchable_trackers AS (
SELECT trackers_sub_query.user_id,
'tracker'::text AS category,
trackers_sub_query.name AS searchable,
trackers_sub_query.updated_at,
json_build_object('id', trackers_sub_query.id, 'name', trackers_sub_query.name, 'space_object_id', trackers_sub_query.space_object_id, 'space_object_name', trackers_sub_query.space_object_name) AS details
FROM trackers_sub_query
), searchable_notifications AS (
SELECT trackers.user_id,
'notification'::text AS category,
trackers.space_object_name AS searchable,
incidents.updated_at,
json_build_object('id', incidents.id, 'starts_at', to_char(incidents.starts_at, 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'::text), 'tracker_name', trackers.name, 'tracker_id', incidents.alert_id, 'space_object_id', trackers.space_object_id, 'space_object_name', trackers.space_object_name) AS json_build_object
FROM (incidents
JOIN trackers_sub_query trackers ON (((incidents.alert_id = trackers.id) AND (incidents.dismissed_at IS NULL) AND (incidents.rendered_obsolete_at IS NULL) AND ((incidents.ends_at IS NULL) OR (incidents.ends_at > now())))))
)
SELECT searchable_simulated_spacecrafts.user_id,
searchable_simulated_spacecrafts.category,
searchable_simulated_spacecrafts.searchable,
searchable_simulated_spacecrafts.updated_at,
searchable_simulated_spacecrafts.details
FROM searchable_simulated_spacecrafts
UNION ALL
SELECT searchable_space_objects.user_id,
searchable_space_objects.category,
searchable_space_objects.searchable,
searchable_space_objects.updated_at,
searchable_space_objects.details
FROM searchable_space_objects
UNION ALL
SELECT searchable_trackers.user_id,
searchable_trackers.category,
searchable_trackers.searchable,
searchable_trackers.updated_at,
searchable_trackers.details
FROM searchable_trackers
UNION ALL
SELECT searchable_notifications.user_id,
searchable_notifications.category,
searchable_notifications.searchable,
searchable_notifications.updated_at,
searchable_notifications.json_build_object AS details
FROM searchable_notifications;
product_analytics
WITH scopes AS (
SELECT 'monthly'::text AS label,
((now() - 'P30D'::interval))::date AS date
UNION
SELECT 'quarterly'::text AS label,
((now() - 'P90D'::interval))::date AS date
UNION
SELECT 'yearly'::text AS label,
((now() - 'P1Y'::interval))::date AS date
), deleted_alerts AS (
SELECT alert_versions.item_id AS alert_id,
alert_versions.created_at AS changed_at,
(((alert_versions.object_changes -> 'archived_at'::text) ->> 0) IS NULL) AS was_deleted
FROM alert_versions
WHERE ((alert_versions.object_changes ->> 'archived_at'::text) IS NOT NULL)
), edited_alerts AS (
SELECT alert_versions.item_id AS alert_id,
alert_versions.created_at AS edited_at
FROM alert_versions
WHERE (((alert_versions.event)::text = 'update'::text) AND (((alert_versions.object_changes ->> 'name'::text) IS NOT NULL) OR ((alert_versions.object_changes ->> 'risk_threshold'::text) IS NOT NULL) OR ((alert_versions.object_changes ->> 'expires_at'::text) IS NOT NULL) OR ((alert_versions.object_changes ->> 'notification_type'::text) IS NOT NULL)))
)
SELECT users.id AS user_id,
scopes.label AS period,
count(DISTINCT incidents.id) FILTER (WHERE (incidents.created_at > scopes.date)) AS total_received_incidents,
count(DISTINCT incidents.id) FILTER (WHERE ((incidents.dismissed_at IS NOT NULL) AND (incidents.dismissed_at > scopes.date))) AS total_closed_incidents,
count(DISTINCT incidents.id) FILTER (WHERE (incidents.seen_at IS NULL)) AS total_pending_incidents,
count(DISTINCT alerts.id) FILTER (WHERE (alerts.created_at > scopes.date)) AS total_created_alerts,
count(DISTINCT deleted_alerts.alert_id) FILTER (WHERE deleted_alerts.was_deleted) AS total_deleted_alerts,
count(DISTINCT deleted_alerts.alert_id) FILTER (WHERE (NOT deleted_alerts.was_deleted)) AS total_restored_alerts,
count(DISTINCT edited_alerts.alert_id) AS total_edited_alerts
FROM (((((users
CROSS JOIN scopes)
LEFT JOIN alerts ON ((users.id = alerts.user_id)))
LEFT JOIN incidents ON (((alerts.id = incidents.alert_id) AND ((incidents.ends_at IS NULL) OR (incidents.ends_at > scopes.date)))))
LEFT JOIN deleted_alerts ON (((alerts.id = deleted_alerts.alert_id) AND (deleted_alerts.changed_at > scopes.date))))
LEFT JOIN edited_alerts ON (((alerts.id = edited_alerts.alert_id) AND (edited_alerts.edited_at > scopes.date))))
GROUP BY users.id, scopes.label;
main_summaries