class

PlaceOS::Model::Zone

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, :check_triggers] 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_children, :destroy_trigger_instances, :destroy_metadata_and_versions, :destroy_settings_and_versions, :remove_array_references] 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}]
ZONE_ARRAY_REFERENCES = {"asset", "pending_mail"}

Tables (other than sys) holding a zones text-array that references zone ids. Rows are pruned in-place when this zone is destroyed.

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, tags : Set(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, location : String | Nil | 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, count : Int32 | 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, timezone : Time::Location | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, triggers : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, images : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, playlists : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, place_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, parent_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new)

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

Class methods

attributes

Returns all attribute keys.

by_parent_id(id)

Look up instances of this model dependent on the foreign key

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_2034 : DB::ResultSet)
on_error(err : Exception | IO::Error)
primary_key

Base class for all Engine models

Source
table_name
with_playlists(ids : Enumerable(String))
Source
with_tag(tag : String)
Source

Instance methods

__parent

Association ##############################################################################################

__parent=(__parent : Zone | Nil)

Association ##############################################################################################

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

apply_defaults

Generate code to apply default values

assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, name : String | Missing = Missing, description : String | Missing = Missing, tags : Set(String) | Missing = Missing, location : String | Nil | Missing = Missing, display_name : String | Nil | Missing = Missing, code : String | Nil | Missing = Missing, type : String | Nil | Missing = Missing, count : Int32 | Missing = Missing, capacity : Int32 | Missing = Missing, map_id : String | Nil | Missing = Missing, timezone : Time::Location | Nil | Missing = Missing, triggers : Array(String) | Missing = Missing, images : Array(String) | Missing = Missing, playlists : Array(String) | Missing = Missing, place_id : String | Nil | Missing = Missing, parent_id : String | Nil | 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::Zone)

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

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?

Could be used as a people capacity

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.

children
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?

Could be used as floor code

code_removed?
code_was
code_will_change!

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

count

count getter

count=(value : Int32)

count setter

count?

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.

count_assigned?
count_change

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

count_changed?
count_default

count's default value

Source
count_present?

Could be used as a desk count

count_removed?
count_was
count_will_change!

Include count 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_children
destroy_metadata_and_versions

Metadata belonging to this zone

destroy_settings_and_versions

Encrypted yaml settings

destroy_trigger_instances
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?

For display on staff app

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.

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?
images_removed?
images_was
images_will_change!

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

invoke_props

Base class for all Engine models

location

location getter

location=(value : String | Nil)

location setter

location_assigned?
location_change

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

location_changed?
location_default

location's default value

Source
location_present?

============================= Additional top level metadata that is fairly common

Geo-location string (lat,long) or any other location

location_removed?
location_was
location_will_change!

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

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 identifier, could be a URL or id

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 zone

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.

parent

Retrieves the parent relationship

Source
parent!

Association ##############################################################################################

Source
parent=(parent : Zone)

Sets the parent relationship

Source
parent_id

parent_id getter

parent_id=(value : String | Nil)

parent_id setter

parent_id_assigned?
parent_id_change

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

parent_id_changed?
parent_id_default

parent_id's default value

parent_id_present?

Association ##############################################################################################

parent_id_removed?
parent_id_was
parent_id_will_change!

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

persistent_attributes

Returns a Hash of all attributes that can be persisted.

place_id

place_id getter

place_id=(value : String | Nil)

place_id setter

place_id_assigned?
place_id_change

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

place_id_changed?
place_id_default

place_id's default value

Source
place_id_present?
place_id_removed?
place_id_was
place_id_will_change!

Include place_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_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
reset_associations

Association ##############################################################################################

Source
restore_attributes

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

root_zone
Source
root_zone_id
Source
settings_and_versions

Encrypted yaml settings

Source
settings_hierarchy
Source
systems

Find systems

Source
table_name
tags

tags getter

tags=(value : Set(String))

tags setter

tags?

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.

tags_assigned?
tags_change

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

tags_changed?
tags_default

tags's default value

Source
tags_present?
tags_removed?
tags_was
tags_will_change!

Include tags 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

timezone_removed?
timezone_was
timezone_will_change!

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

trigger_data

Looks up the triggers attached to the zone

Source
trigger_instances
Source
triggers

triggers getter

triggers=(value : Array(String))

triggers setter

triggers?

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.

triggers_assigned?
triggers_change

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

triggers_changed?
triggers_default

triggers's default value

Source
triggers_present?
triggers_removed?
triggers_was
triggers_will_change!

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

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?

Could be used as floor type

type_removed?
type_was
type_will_change!

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

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.

Nested types