class

PlaceOS::Model::ControlSystem

Inherits PlaceOS::Model::Playlist::Checker < PlaceOS::Model::Utilities::MetadataHelper < PlaceOS::Model::Utilities::SettingsHelper < PlaceOS::Model::Timestamps < PlaceOS::Model::ModelBase < PlaceOS::Model::Associations < Neuroplastic < PgORM::Base < PgORM::Validators < PgORM::Table < PgORM::Persistence < PgORM::Associations < ActiveModel::Callbacks < ActiveModel::Validation < ActiveModel::Model < DB::Mappable < DB::Serializable < YAML::Serializable < JSON::Serializable < Reference < Object

Constants

CALLBACKS = { before_save: [:check_playlists, :clean_urls, :check_zones, :check_modules] of Nil, after_save: [:update_triggers] of Nil, before_create: [do self.created_at = self.updated_at = Time.utc end] of Nil, after_create: [] of Nil, before_update: [do self.updated_at = Time.utc end] of Nil, after_update: [] of Nil, before_destroy: [:destroy_settings_and_versions, :destroy_metadata_and_versions, :destroy_system_triggers, :cleanup_modules] of Nil, after_destroy: [] of Nil, }
Log = ::Log.for(self)
PRIMARY_KEY_TYPES = {:id => (String | Nil)} of Nil => Nil

macro level key => type

PRIMARY_KEYS = [{:id}]

Constructors

from_json(string_or_io : String | IO, trusted : Bool = false) : self
from_json(string_or_io : String | IO, root : String, trusted : Bool = false) : self

Deserializes the given JSON in string_or_io into an instance of self, assuming the JSON consists of an JSON object with key root, and whose value is the value to deserialize. Will not deserialise from fields with mass_assign: false

class User < ActiveModel::Model
  attribute name : String
  attribute google_id : UUID, mass_assign: false
end

User.from_json(%({"main": {"name": "Jason", "google_id": "f6f70bfb-c882-446d-8758-7ce47db39620"}}), root: "main") # => #<User:0x103131b20 @name="Jason">
from_trusted_json(string_or_io : String | IO, root : String) : self
from_trusted_json(string_or_io : String | IO) : self

Serialize from a trusted JSON source

from_trusted_yaml(string_or_io : String | IO) : self

Serialize from a trusted YAML source

from_yaml(string_or_io : String | IO, trusted : Bool = false) : self
new(rs : DB::ResultSet)
new(created_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, updated_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, name : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, description : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, features : Set(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, email : PlaceOS::Model::Email | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, bookable : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, public : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, display_name : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, code : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, type : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, capacity : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, map_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, approval : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, images : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, security_groups : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, timezone : Time::Location | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, support_url : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, timetable_url : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, camera_snapshot_urls : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, camera_url : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, room_booking_url : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, version : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, installed_ui_devices : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, zones : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, modules : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, orientation : PlaceOS::Model::Playlist::Orientation | ActiveModel::Model::None = ::ActiveModel::Model::None.new, playlists : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, signage : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, signage_last_seen : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, playlist_item_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, space_config : Hash(String, JSON::Any) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new)

Initialize PlaceOS::Model::ControlSystem from HTTP::Params.

Class methods

add_module(control_system_id : String, module_id : String)
Source
attributes

Returns all attribute keys.

by_module_id(id)
Source
by_playlist_item_id(id)

Look up instances of this model dependent on the foreign key

Source
by_zone_id(id)
Source
changes(id : String | Nil | Nil = nil) : ChangeFeed

Changefeed at row (if id passed) or whole table level. Returns a ChangeFeed instance which can be used to invoke async callbacks via on or use blocking Iterator via each method.

elastic
from_rs(__temp_2054 : DB::ResultSet)
in_zone(id)

DEPRECATED Use .by_zone_id

Source
on_error(err : Exception | IO::Error)
primary_key

Base class for all Engine models

Source
remove_module(control_system_id : String, module_id : String)
Source
table_name
using_module(id)

DEPRECATED Use .by_module_id

Source
with_playlists(ids : Enumerable(String))
Source

Instance methods

__playlist_item
__playlist_item=(__playlist_item : Playlist::Item | Nil)
add_module(module_id : String)

Removes the module from the system and deletes it if not used elsewhere

Source
after_create

Base class for all Engine models

after_destroy

Base class for all Engine models

after_initialize(trusted : Bool)
after_save

Base class for all Engine models

after_update

Base class for all Engine models

all_playlists
Source
apply_defaults

Generate code to apply default values

approval

approval getter

approval=(value : Bool)

approval setter

approval?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

approval_assigned?
approval_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

approval_changed?
approval_default

approval's default value

Source
approval_present?
approval_removed?
approval_was
approval_will_change!

Include approval in the set of changed attributes, whether it has changed or not.

assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, name : String | Missing = Missing, description : String | Missing = Missing, features : Set(String) | Missing = Missing, email : PlaceOS::Model::Email | Nil | Missing = Missing, bookable : Bool | Missing = Missing, public : Bool | Missing = Missing, display_name : String | Nil | Missing = Missing, code : String | Nil | Missing = Missing, type : String | Nil | Missing = Missing, capacity : Int32 | Missing = Missing, map_id : String | Nil | Missing = Missing, approval : Bool | Missing = Missing, images : Array(String) | Missing = Missing, security_groups : Array(String) | Missing = Missing, timezone : Time::Location | Nil | Missing = Missing, support_url : String | Missing = Missing, timetable_url : String | Nil | Missing = Missing, camera_snapshot_urls : Array(String) | Missing = Missing, camera_url : String | Nil | Missing = Missing, room_booking_url : String | Nil | Missing = Missing, version : Int32 | Missing = Missing, installed_ui_devices : Int32 | Missing = Missing, zones : Array(String) | Missing = Missing, modules : Array(String) | Missing = Missing, orientation : PlaceOS::Model::Playlist::Orientation | Missing = Missing, playlists : Array(String) | Missing = Missing, signage : Bool | Missing = Missing, signage_last_seen : Time | Missing = Missing, playlist_item_id : String | Nil | Missing = Missing, space_config : Hash(String, JSON::Any) | Missing = Missing, id : String | Nil | Missing = Missing)

Assign to multiple attributes.

assign_attributes(params : HTTP::Params | Hash(String, String) | Tuple(String, String))

Assign to multiple attributes via HTTP::Params.

assign_attributes(model : PlaceOS::Model::ControlSystem)

Assign to multiple attributes from a model object

assign_attributes_from_json(json, root : String)
assign_attributes_from_json(json)
assign_attributes_from_trusted_json(json, root : String)
assign_attributes_from_trusted_json(json)

Assign each field from JSON if field exists in JSON and has changed in model

assign_attributes_from_trusted_yaml(yaml)
assign_attributes_from_yaml(yaml)

Uses the YAML parser as JSON is valid YAML

attributes

Returns a Hash of all attribute values

attributes_tuple

Returns a NamedTuple of all attribute values.

before_create

Base class for all Engine models

before_destroy

Base class for all Engine models

before_save

Base class for all Engine models

before_update

Base class for all Engine models

bookable

bookable getter

bookable=(value : Bool)

bookable setter

bookable?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

bookable_assigned?
bookable_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

bookable_changed?
bookable_default

bookable's default value

Source
bookable_present?
bookable_removed?
bookable_was
bookable_will_change!

Include bookable in the set of changed attributes, whether it has changed or not.

camera_snapshot_urls

camera_snapshot_urls getter

camera_snapshot_urls=(value : Array(String))

camera_snapshot_urls setter

camera_snapshot_urls?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

camera_snapshot_urls_assigned?
camera_snapshot_urls_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

camera_snapshot_urls_changed?
camera_snapshot_urls_default

camera_snapshot_urls's default value

Source
camera_snapshot_urls_present?
camera_snapshot_urls_removed?
camera_snapshot_urls_was
camera_snapshot_urls_will_change!

Include camera_snapshot_urls in the set of changed attributes, whether it has changed or not.

camera_url

camera_url getter

camera_url=(value : String | Nil)

camera_url setter

camera_url_assigned?
camera_url_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

camera_url_changed?
camera_url_default

camera_url's default value

Source
camera_url_present?
camera_url_removed?
camera_url_was
camera_url_will_change!

Include camera_url in the set of changed attributes, whether it has changed or not.

capacity

capacity getter

capacity=(value : Int32)

capacity setter

capacity?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

capacity_assigned?
capacity_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

capacity_changed?
capacity_default

capacity's default value

Source
capacity_present?
capacity_removed?
capacity_was
capacity_will_change!

Include capacity in the set of changed attributes, whether it has changed or not.

changed?

Check if any attributes have changed.

changed_attributes

Returns a Hash with all changed attributes.

changed_json(io : IO) : Nil

Serialize the set of changed attributes to JSON.

changed_json

Serialize the set of changed attributes to JSON.

changed_persist_attributes
changed_yaml(io : IO) : Nil

Serialize the set of changed attributes to YAML.

changed_yaml

Serialize the set of changed attributes to YAML.

check_modules

ensure all the modules are valid and exist

Source
clean_urls
Source
cleanup_modules

Remove Modules not associated with any other systems NOTE: Includes compulsory associated Logic Modules

Source
clear_changes_information

Reset changes for all attributes.

code

code getter

code=(value : String | Nil)

code setter

code_assigned?
code_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

code_changed?
code_default

code's default value

Source
code_present?
code_removed?
code_was
code_will_change!

Include code in the set of changed attributes, whether it has changed or not.

created_at

created_at getter

created_at=(value : Time)

Setters created_at setter

created_at?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

created_at_assigned?
created_at_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

created_at_changed?
created_at_default

created_at's default value

created_at_present?
created_at_removed?
created_at_was
created_at_will_change!

Include created_at in the set of changed attributes, whether it has changed or not.

description

description getter

description=(value : String)

description setter

description?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

description_assigned?
description_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

description_changed?
description_default

description's default value

Source
description_present?
description_removed?
description_was
description_will_change!

Include description in the set of changed attributes, whether it has changed or not.

destroy_metadata_and_versions

Metadata belonging to this control_system

destroy_settings_and_versions

Encrypted yaml settings, with metadata

destroy_system_triggers

Single System triggers

display_name

display_name getter

display_name=(value : String | Nil)

display_name setter

display_name_assigned?
display_name_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

display_name_changed?
display_name_default

display_name's default value

Source
display_name_present?
display_name_removed?
display_name_was
display_name_will_change!

Include display_name in the set of changed attributes, whether it has changed or not.

email

email getter

email=(value : PlaceOS::Model::Email | Nil)

email setter

email_assigned?
email_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

email_changed?
email_default

email's default value

Source
email_present?
email_removed?
email_was
email_will_change!

Include email in the set of changed attributes, whether it has changed or not.

features

features getter

features=(value : Set(String))

features setter

features?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

features_assigned?
features_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

features_changed?
features_default

features's default value

Source
features_present?

Room search meta-data Building + Level are both filtered using zones

features_removed?
features_was
features_will_change!

Include features in the set of changed attributes, whether it has changed or not.

id

id getter

id=(value : String | Nil)

id setter

id?
id_assigned?
id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

id_changed?
id_default

id's default value

id_present?
id_removed?
id_was
id_will_change!

Include id in the set of changed attributes, whether it has changed or not.

images

images getter

images=(value : Array(String))

images setter

images?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

images_assigned?
images_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

images_changed?
images_default

images's default value

Source
images_present?

Array of URLs to images for a system

images_removed?
images_was
images_will_change!

Include images in the set of changed attributes, whether it has changed or not.

installed_ui_devices

installed_ui_devices getter

installed_ui_devices=(value : Int32)

installed_ui_devices setter

installed_ui_devices?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

installed_ui_devices_assigned?
installed_ui_devices_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

installed_ui_devices_changed?
installed_ui_devices_default

installed_ui_devices's default value

Source
installed_ui_devices_present?

The number of UI devices that are always available in the room i.e. the number of iPads mounted on the wall

installed_ui_devices_removed?
installed_ui_devices_was
installed_ui_devices_will_change!

Include installed_ui_devices in the set of changed attributes, whether it has changed or not.

invoke_props

Base class for all Engine models

map_id

map_id getter

map_id=(value : String | Nil)

map_id setter

map_id_assigned?
map_id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

map_id_changed?
map_id_default

map_id's default value

Source
map_id_present?
map_id_removed?
map_id_was
map_id_will_change!

Include map_id in the set of changed attributes, whether it has changed or not.

metadata_and_versions

Metadata belonging to this control_system

Source
module_data

Obtains the control system's modules as json FIXME: Dreadfully needs optimisation, i.e. subset serialisation

Source
modules

modules getter

modules=(value : Array(String))

modules setter

modules?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

modules_assigned?
modules_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

modules_changed?
modules_default

modules's default value

Source
modules_present?
modules_removed?
modules_was
modules_will_change!

Include modules in the set of changed attributes, whether it has changed or not.

modules_with_single_occurrence
Source
name

name getter

name=(value : String)

name setter

name?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

name_assigned?
name_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

name_changed?
name_default

name's default value

Source
name_present?
name_removed?
name_was
name_will_change!

Include name in the set of changed attributes, whether it has changed or not.

orientation

orientation getter

orientation setter

orientation?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

orientation_assigned?
orientation_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

orientation_changed?
orientation_default

orientation's default value

Source
orientation_present?

Systems as digital signage displays playlists can be assigned directly to displays or to zones playlists in zones will only be loaded if they have matching orientations

orientation_removed?
orientation_was
orientation_will_change!

Include orientation in the set of changed attributes, whether it has changed or not.

persistent_attributes

Returns a Hash of all attributes that can be persisted.

playlist_item

Retrieves the parent relationship

Source
playlist_item!
Source
playlist_item=(parent : Playlist::Item)

Sets the parent relationship

Source
playlist_item_id

playlist_item_id getter

playlist_item_id=(value : String | Nil)

playlist_item_id setter

playlist_item_id_assigned?
playlist_item_id_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

playlist_item_id_changed?
playlist_item_id_default

playlist_item_id's default value

playlist_item_id_present?
playlist_item_id_removed?
playlist_item_id_was
playlist_item_id_will_change!

Include playlist_item_id in the set of changed attributes, whether it has changed or not.

playlists

playlists getter

playlists=(value : Array(String))

playlists setter

playlists?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

playlists_assigned?
playlists_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

playlists_changed?
playlists_default

playlists's default value

Source
playlists_last_updated(playlists : Hash(String, Array(String)) = all_playlists) : Time
Source
playlists_present?
playlists_removed?
playlists_was
playlists_will_change!

Include playlists in the set of changed attributes, whether it has changed or not.

primary_key

Base class for all Engine models

Source
primary_key_hash
public

public getter

public=(value : Bool)

public setter

public?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

public_assigned?
public_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

public_changed?
public_default

public's default value

Source
public_present?
public_removed?
public_was
public_will_change!

Include public in the set of changed attributes, whether it has changed or not.

remove_module(module_id : String)

Removes the module from the system and deletes it if not used elsewhere

Source
reset_associations
Source
restore_attributes

Reset each attribute to their previous values and clears all changes.

room_booking_url

room_booking_url getter

room_booking_url=(value : String | Nil)

room_booking_url setter

room_booking_url_assigned?
room_booking_url_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

room_booking_url_changed?
room_booking_url_default

room_booking_url's default value

Source
room_booking_url_present?

if not bookable via google / O365 calendaring systems

room_booking_url_removed?
room_booking_url_was
room_booking_url_will_change!

Include room_booking_url in the set of changed attributes, whether it has changed or not.

security_groups

security_groups getter

security_groups=(value : Array(String))

security_groups setter

security_groups?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

security_groups_assigned?
security_groups_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

security_groups_changed?
security_groups_default

security_groups's default value

Source
security_groups_present?

Array of security group ids for room access

security_groups_removed?
security_groups_was
security_groups_will_change!

Include security_groups in the set of changed attributes, whether it has changed or not.

settings_and_versions

Encrypted yaml settings, with metadata

Source
settings_hierarchy

Collect Settings ordered by hierarchy

Control System < Zone/n < Zone/(n-1) < ... < Zone/0

Source
signage

signage getter

signage=(value : Bool)

signage setter

signage?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

signage_assigned?
signage_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

signage_changed?
signage_default

signage's default value

Source
signage_last_seen

signage_last_seen getter

signage_last_seen=(value : Time)

signage_last_seen setter

signage_last_seen?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

signage_last_seen_assigned?
signage_last_seen_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

signage_last_seen_changed?
signage_last_seen_default

signage_last_seen's default value

Source
signage_last_seen_present?
signage_last_seen_removed?
signage_last_seen_was
signage_last_seen_will_change!

Include signage_last_seen in the set of changed attributes, whether it has changed or not.

signage_present?
signage_removed?
signage_was
signage_will_change!

Include signage in the set of changed attributes, whether it has changed or not.

space_config

space_config getter

space_config=(value : Hash(String, JSON::Any))

space_config setter

space_config?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

space_config_assigned?
space_config_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

space_config_changed?
space_config_default

space_config's default value

Source
space_config_present?
space_config_removed?
space_config_was
space_config_will_change!

Include space_config in the set of changed attributes, whether it has changed or not.

support_url

support_url getter

support_url=(value : String)

support_url setter

support_url?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

support_url_assigned?
support_url_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

support_url_changed?
support_url_default

support_url's default value

Source
support_url_present?

Provide fields for simplifying support

support_url_removed?
support_url_was
support_url_will_change!

Include support_url in the set of changed attributes, whether it has changed or not.

system_triggers

Single System triggers

Source
table_name
timetable_url

timetable_url getter

timetable_url=(value : String | Nil)

timetable_url setter

timetable_url_assigned?
timetable_url_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

timetable_url_changed?
timetable_url_default

timetable_url's default value

Source
timetable_url_present?
timetable_url_removed?
timetable_url_was
timetable_url_will_change!

Include timetable_url in the set of changed attributes, whether it has changed or not.

timezone

timezone getter

timezone=(value : Time::Location | Nil)

timezone setter

timezone_assigned?
timezone_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

timezone_changed?
timezone_default

timezone's default value

Source
timezone_present?
timezone_removed?
timezone_was
timezone_will_change!

Include timezone in the set of changed attributes, whether it has changed or not.

triggers

Triggers

Source
type

type getter

type=(value : String | Nil)

type setter

type_assigned?
type_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

type_changed?
type_default

type's default value

Source
type_present?
type_removed?
type_was
type_will_change!

Include type in the set of changed attributes, whether it has changed or not.

update_last_seen_time(item_id : String | Nil = nil)
Source
updated_at

updated_at getter

updated_at=(value : Time)

updated_at setter

updated_at?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

updated_at_assigned?
updated_at_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

updated_at_changed?
updated_at_default

updated_at's default value

updated_at_present?
updated_at_removed?
updated_at_was
updated_at_will_change!

Include updated_at in the set of changed attributes, whether it has changed or not.

validate_nilability

Validate that all non-nillable fields have values.

version

version getter

version=(value : Int32)

version setter

version?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

version_assigned?
version_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

version_changed?
version_default

version's default value

Source
version_present?
version_removed?
version_was
version_will_change!

Include version in the set of changed attributes, whether it has changed or not.

zone_data

Obtains the control system's zones as json

Source
zones

zones getter

zones=(value : Array(String))

zones setter

zones?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

zones_assigned?
zones_change

Returns a Tuple of the previous and the current value of an instance variable if it has changed

zones_changed?
zones_default

zones's default value

Source
zones_present?

IDs of associated models

zones_removed?
zones_was
zones_will_change!

Include zones in the set of changed attributes, whether it has changed or not.

Nested types