mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-21 15:54:22 +01:00
Optimise sql query, avoid to N+1
This commit is contained in:
parent
97f7a0aac8
commit
a6c230145b
@ -103,14 +103,14 @@ class Availabilities::AvailabilitiesService
|
|||||||
def availabilities(reservable, type, user)
|
def availabilities(reservable, type, user)
|
||||||
if user.admin? || user.manager?
|
if user.admin? || user.manager?
|
||||||
reservable.availabilities
|
reservable.availabilities
|
||||||
.includes(:tags)
|
.includes(:tags, :plans)
|
||||||
.where('end_at > ? AND available_type = ?', 1.month.ago, type)
|
.where('end_at > ? AND available_type = ?', 1.month.ago, type)
|
||||||
.where(lock: false)
|
.where(lock: false)
|
||||||
else
|
else
|
||||||
end_at = @maximum_visibility[:other]
|
end_at = @maximum_visibility[:other]
|
||||||
end_at = @maximum_visibility[:year] if subscription_year?(user)
|
end_at = @maximum_visibility[:year] if subscription_year?(user)
|
||||||
reservable.availabilities
|
reservable.availabilities
|
||||||
.includes(:tags)
|
.includes(:tags, :plans)
|
||||||
.where('end_at > ? AND end_at < ? AND available_type = ?', DateTime.current, end_at, type)
|
.where('end_at > ? AND end_at < ? AND available_type = ?', DateTime.current, end_at, type)
|
||||||
.where('availability_tags.tag_id' => user.tag_ids.concat([nil]))
|
.where('availability_tags.tag_id' => user.tag_ids.concat([nil]))
|
||||||
.where(lock: false)
|
.where(lock: false)
|
||||||
@ -127,14 +127,14 @@ class Availabilities::AvailabilitiesService
|
|||||||
# who made the request?
|
# who made the request?
|
||||||
# 1) an admin (he can see all availabilities of 1 month ago and future)
|
# 1) an admin (he can see all availabilities of 1 month ago and future)
|
||||||
if @current_user.admin?
|
if @current_user.admin?
|
||||||
availabilities.includes(:tags, :slots, trainings: [:machines])
|
availabilities.includes(:tags, :slots, :plans, trainings: [:machines])
|
||||||
.where('availabilities.start_at > ?', 1.month.ago)
|
.where('availabilities.start_at > ?', 1.month.ago)
|
||||||
.where(lock: false)
|
.where(lock: false)
|
||||||
# 2) an user (he cannot see availabilities further than 1 (or 3) months)
|
# 2) an user (he cannot see availabilities further than 1 (or 3) months)
|
||||||
else
|
else
|
||||||
end_at = @maximum_visibility[:other]
|
end_at = @maximum_visibility[:other]
|
||||||
end_at = @maximum_visibility[:year] if show_extended_slots?(user)
|
end_at = @maximum_visibility[:year] if show_extended_slots?(user)
|
||||||
availabilities.includes(:tags, :slots, :availability_tags, trainings: [:machines])
|
availabilities.includes(:tags, :slots, :availability_tags, :plans, trainings: [:machines])
|
||||||
.where('availabilities.start_at > ? AND availabilities.start_at < ?', DateTime.current, end_at)
|
.where('availabilities.start_at > ? AND availabilities.start_at < ?', DateTime.current, end_at)
|
||||||
.where('availability_tags.tag_id' => user.tag_ids.concat([nil]))
|
.where('availability_tags.tag_id' => user.tag_ids.concat([nil]))
|
||||||
.where(lock: false)
|
.where(lock: false)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user