1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-13 23:48:55 +01:00
fab-manager/app/services/machine_service.rb

43 lines
1.3 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# Provides methods for Machines
class MachineService
2023-02-17 12:06:32 +01:00
class << self
include ApplicationHelper
2023-02-17 12:06:32 +01:00
# @param filters [ActionController::Parameters]
def list(filters)
sort_by = Setting.get('machines_sort_by') || 'default'
machines = if sort_by == 'default'
2023-07-28 16:16:44 +02:00
Machine.includes(:machine_image, :plans, :space)
2023-02-17 12:06:32 +01:00
else
2023-07-28 16:16:44 +02:00
Machine.includes(:machine_image, :plans, :space).order(sort_by)
2023-02-17 12:06:32 +01:00
end
# do not include soft destroyed
machines = machines.where(deleted_at: nil)
machines = filter_by_disabled(machines, filters)
filter_by_categories(machines, filters)
2023-02-17 12:06:32 +01:00
end
private
# @param machines [ActiveRecord::Relation<Machine>]
# @param filters [ActionController::Parameters]
def filter_by_disabled(machines, filters)
return machines if filters[:disabled].blank?
2022-11-22 14:17:25 +01:00
state = filters[:disabled] == 'false' ? [nil, false] : true
2023-02-17 12:06:32 +01:00
machines.where(disabled: state)
end
2023-02-17 12:06:32 +01:00
# @param machines [ActiveRecord::Relation<Machine>]
# @param filters [ActionController::Parameters]
def filter_by_categories(machines, filters)
2023-02-17 12:06:32 +01:00
return machines if filters[:category].blank?
machines.where(machine_category_id: filters[:category].split(',').map { |id| id == 'none' ? nil : id })
2023-02-17 12:06:32 +01:00
end
end
end