|
sql
app/models/climber_proximity.rb:107
|
96%
|
app/models/climber_proximity.rb:107
- Average Self
-
563ms
- Average calls
- 1x
- Total Self
- 563ms
- Total Children
- 0ms
- Total runtime
- 563ms
WITH t_ascent_crags AS (
SELECT ascents.user_id,
COUNT(DISTINCT ascents.released_at) AS count
FROM ascents INNER JOIN crag_routes ON ascents.crag_route_id = crag_routes.id AND ascents.user_id != ?,
ascents my_ascents INNER JOIN crag_routes my_crag_routes ON my_ascents.crag_route_id = my_crag_routes.id AND my_ascents.user_id = ?
WHERE ascents.released_at = my_ascents.released_at
AND ascents.user_id != ?
AND crag_routes.crag_id = my_crag_routes.crag_id
AND ascents.released_at > CURRENT_DATE - INTERVAL ? YEAR
AND NOT EXISTS (SELECT * FROM follows WHERE follows.followable_type = ? AND follows.followable_id = ascents.user_id AND follows.user_id = ?)
GROUP BY ascents.user_id
), t_ascent_gyms AS (
SELECT ascents.user_id,
COUNT(DISTINCT ascents.released_at) AS count
FROM ascents,
ascents my_ascents
WHERE ascents.released_at = my_ascents.released_at
AND ascents.user_id != ?
AND my_ascents.user_id = ?
AND ascents.gym_id = my_ascents.gym_id
AND ascents.released_at > CURRENT_DATE - INTERVAL ? MONTH
AND NOT EXISTS (SELECT * FROM follows WHERE follows.followable_type = ? AND follows.followable_id = ascents.user_id AND follows.user_id = ?)
GROUP BY ascents.user_id
), t_common_friends AS (
SELECT follows.user_id, COUNT(*) AS count
FROM follows, follows my_follows
WHERE follows.followable_type = ?
AND my_follows.followable_type = ?
AND follows.followable_id = my_follows.followable_id
AND follows.followable_id != ?
AND my_follows.followable_id != ?
AND follows.accepted_at IS NOT NULL
AND my_follows.accepted_at IS NOT NULL
AND follows.user_id NOT IN (?)
AND my_follows.user_id = ?
GROUP BY follows.user_id
), t_followed_crags AS (
SELECT follows.user_id, COUNT(*) AS count
FROM follows, follows my_follows
WHERE follows.followable_type = ?
AND my_follows.followable_type = ?
AND follows.followable_id = my_follows.followable_id
AND follows.accepted_at IS NOT NULL
AND my_follows.accepted_at IS NOT NULL
AND follows.user_id != ?
AND my_follows.user_id = ?
AND NOT EXISTS (SELECT * FROM follows my_friends WHERE my_friends.followable_type = ? AND my_friends.followable_id = follows.user_id AND my_friends.user_id = ?)
GROUP BY follows.user_id
), t_followed_gyms AS (
SELECT follows.user_id, COUNT(*) AS count
FROM follows, follows my_follows
WHERE follows.followable_type = ?
AND my_follows.followable_type = ?
AND follows.followable_id = my_follows.followable_id
AND follows.accepted_at IS NOT NULL
AND my_follows.accepted_at IS NOT NULL
AND follows.user_id != ?
AND my_follows.user_id = ?
AND NOT EXISTS (SELECT * FROM follows my_friends WHERE my_friends.followable_type = ? AND my_friends.followable_id = follows.user_id AND my_friends.user_id = ?)
GROUP BY follows.user_id
)
SELECT id,
uuid,
first_name,
last_name,
slug_name,
t_ascent_crags.count AS ascent_crags,
t_ascent_gyms.count AS ascent_gyms,
t_common_friends.count AS common_friends,
t_followed_crags.count AS followed_crags,
t_followed_gyms.count AS followed_gyms,
(
COALESCE(t_ascent_crags.count, ?) +
COALESCE(t_ascent_gyms.count, ?) +
COALESCE(t_common_friends.count, ?) * ? +
COALESCE(t_followed_crags.count, ?) / ? +
COALESCE(t_followed_gyms.count, ?) / ?
) AS proximity_points
FROM users
LEFT JOIN t_ascent_crags ON t_ascent_crags.user_id = users.id
LEFT JOIN t_ascent_gyms ON t_ascent_gyms.user_id = users.id
LEFT JOIN t_common_friends ON t_common_friends.user_id = users.id
LEFT JOIN t_followed_crags ON t_followed_crags.user_id = users.id
LEFT JOIN t_followed_gyms ON t_followed_gyms.user_id = users.id
WHERE users.id != ?
AND NOT EXISTS (SELECT * FROM follows my_friends WHERE my_friends.followable_type = ? AND my_friends.followable_id = users.id AND my_friends.user_id = ?)
ORDER BY proximity_points DESC,
users.last_activity_at DESC,
users.id DESC
LIMIT ? OFFSET ?
|
|
code
app/controllers/api/v1/current_users_controller.rb:403
|
2%
|
app/controllers/api/v1/current_users_controller.rb:403
- Average Self
-
14ms
- Average calls
- 1x
- Total Self
- 14ms
- Total Children
- 571ms
- Total runtime
- 585ms
Api::V1::CurrentUsersController#suggested_friends
|
|
sql
app/models/climber_proximity.rb:122
|
1%
|
app/models/climber_proximity.rb:122
- Average Self
-
1.3ms
- Average calls
- 5x
- Total Self
- 6.6ms
- Total Children
- 0ms
- Total runtime
- 6.6ms
SELECT `users`.* FROM `users` WHERE `users`.`id` IN (?)
SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_type` = ? AND `active_storage_attachments`.`name` = ? AND `active_storage_attachments`.`record_id` IN (?)
SELECT `active_storage_blobs`.* FROM `active_storage_blobs` WHERE `active_storage_blobs`.`id` IN (?)
|
|
code
/var/www/oblyk/api/shared/bundle/ruby/2.6.0/gems/railties-6.0.3.6/lib/rails/engine.rb:525
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.6.0/gems/railties-6.0.3.6/lib/rails/engine.rb:525
- Average Self
-
1.9ms
- Average calls
- 0.99x
- Total Self
- 1.9ms
- Total Children
- 583ms
- Total runtime
- 585ms
Rails::Engine#call
|
|
sql
app/controllers/api/v1/api_controller.rb:64
|
<1%
|
app/controllers/api/v1/api_controller.rb:64
- Average Self
-
1.1ms
- Average calls
- 1x
- Total Self
- 1.1ms
- Total Children
- 0ms
- Total runtime
- 1.1ms
SELECT `users`.* FROM `users` WHERE `users`.`id` = ? LIMIT ?
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/head.rb:11
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/head.rb:11
- Average Self
-
1ms
- Average calls
- <0.01x
- Total Self
- <0.01ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rack::Head
|
|
code
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/railties-6.0.6.1/lib/rails/engine.rb:525
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/railties-6.0.6.1/lib/rails/engine.rb:525
- Average Self
-
1ms
- Average calls
- <0.01x
- Total Self
- <0.01ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rails::Engine#call
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/conditional_get.rb:24
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/conditional_get.rb:24
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rack::ConditionalGet
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/railties-6.0.6.1/lib/rails/rack/logger.rb:22
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/railties-6.0.6.1/lib/rails/rack/logger.rb:22
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rails::Rack::Logger
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/ssl.rb:70
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/ssl.rb:70
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::SSL
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/executor.rb:11
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/executor.rb:11
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::Executor
|
|
cache
app/controllers/api/v1/api_controller.rb:49
|
<1%
|
app/controllers/api/v1/api_controller.rb:49
- Average Self
-
0ms
- Average calls
- 0.02x
- Total Self
- 0ms
- Total Children
- 0ms
- Total runtime
- 0ms
read
write
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/request_id.rb:24
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/request_id.rb:24
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::RequestId
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/sendfile.rb:126
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/sendfile.rb:126
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rack::Sendfile
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/show_exceptions.rb:31
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/show_exceptions.rb:31
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::ShowExceptions
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/activesupport-6.0.6.1/lib/active_support/cache/strategy/local_cache_middleware.rb:27
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/activesupport-6.0.6.1/lib/active_support/cache/strategy/local_cache_middleware.rb:27
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActiveSupport::Cache::Strategy::LocalCache::Middleware
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/debug_exceptions.rb:30
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/debug_exceptions.rb:30
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::DebugExceptions
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-cors-2.0.2/lib/rack/cors.rb:66
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-cors-2.0.2/lib/rack/cors.rb:66
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rack::Cors
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/etag.rb:26
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/etag.rb:26
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rack::ETag
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/runtime.rb:20
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/runtime.rb:20
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
Rack::Runtime
|
|
sql
app/controllers/api/v1/api_controller.rb:50
|
<1%
|
app/controllers/api/v1/api_controller.rb:50
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 0ms
- Total runtime
- 0ms
SELECT `organizations`.* FROM `organizations` WHERE `organizations`.`api_access_token` = ? LIMIT ?
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/request_store-1.7.0/lib/request_store/middleware.rb:16
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/request_store-1.7.0/lib/request_store/middleware.rb:16
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
RequestStore::Middleware
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/remote_ip.rb:78
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/remote_ip.rb:78
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::RemoteIp
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/actionable_exceptions.rb:16
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/actionable_exceptions.rb:16
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::ActionableExceptions
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/callbacks.rb:24
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/callbacks.rb:24
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::Callbacks
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/cookies.rb:651
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/cookies.rb:651
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::Cookies
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/host_authorization.rb:96
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/actionpack-6.0.6.1/lib/action_dispatch/middleware/host_authorization.rb:96
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::HostAuthorization
|
|
rack
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/session/abstract/id.rb:259
|
<1%
|
/var/www/oblyk/api/shared/bundle/ruby/2.7.0/gems/rack-2.2.23/lib/rack/session/abstract/id.rb:259
- Average Self
-
0ms
- Average calls
- <0.01x
- Total Self
- 0ms
- Total Children
- 2.5ms
- Total runtime
- 2.5ms
ActionDispatch::Session::CookieStore
|