farmbot_os/farmbot_ext/lib/farmbot_ext/api/sync_group.ex

71 lines
1.3 KiB
Elixir

defmodule FarmbotExt.API.SyncGroup do
@moduledoc "Handles dependency ordering."
alias FarmbotCore.Asset.{
Device,
FarmEvent,
FarmwareEnv,
FirstPartyFarmware,
FarmwareInstallation,
FbosConfig,
FirmwareConfig,
Peripheral,
PinBinding,
Point,
PointGroup,
# PublicKey,
Regimen,
SensorReading,
Sensor,
Sequence,
Tool
}
def all_groups, do: group_0() ++ group_1() ++ group_2() ++ group_3() ++ group_4()
@doc "Assets in Group 0 are required for FarmBot to operate."
def group_0,
do: [
Device,
FbosConfig,
FirmwareConfig,
FarmwareEnv,
FirstPartyFarmware,
FarmwareInstallation
]
@doc "Group 1 should have no external requirements"
def group_1,
do: [
Peripheral,
Point,
SensorReading,
Sensor,
Tool
]
@doc "Group 2 relies on assets in Group 1"
def group_2,
do: [
# Requires Peripheral, Point, Sensor, SensorReading, Tool
Sequence,
PointGroup
]
@doc "Group 3 relies on assets in Group 2"
def group_3,
do: [
# Requires Sequence
Regimen,
# Requires Sequence
PinBinding
]
@doc "Group 4 relies on assets in Group 3"
def group_4,
do: [
# Requires Regimen and Sequence
FarmEvent
]
end