class

PlaceOS::Model::Trigger

Inherits 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: [] of Nil, after_save: [] 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_trigger_instances] of Nil, after_destroy: [] of Nil, }
Log = ::Log.for(self)
METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE"] of ::String
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, actions : PlaceOS::Model::Trigger::Actions | ActiveModel::Model::None = ::ActiveModel::Model::None.new, conditions : PlaceOS::Model::Trigger::Conditions | ActiveModel::Model::None = ::ActiveModel::Model::None.new, debounce_period : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, important : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, enable_webhook : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, any_match : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, supported_methods : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, control_system_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new)

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

Class methods

attributes

Returns all attribute keys.

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

Base class for all Engine models

Source
table_name

Instance methods

__control_system

Allows filtering in cases of a Trigger belonging to a single ControlSystem

__control_system=(__control_system : ControlSystem | Nil)

Allows filtering in cases of a Trigger belonging to a single ControlSystem

actions

actions getter

actions setter

actions?

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.

actions_assigned?
actions_change

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

actions_changed?
actions_default

actions's default value

Source
actions_present?

Full path allows resolution in macros

actions_removed?
actions_was
actions_will_change!

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

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

any_match

any_match getter

any_match=(value : Bool)

any_match setter

any_match?

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.

any_match_assigned?
any_match_change

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

any_match_changed?
any_match_default

any_match's default value

Source
any_match_present?
any_match_removed?
any_match_was
any_match_will_change!

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

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, actions : PlaceOS::Model::Trigger::Actions | Missing = Missing, conditions : PlaceOS::Model::Trigger::Conditions | Missing = Missing, debounce_period : Int32 | Missing = Missing, important : Bool | Missing = Missing, enable_webhook : Bool | Missing = Missing, any_match : Bool | Missing = Missing, supported_methods : Array(String) | Missing = Missing, control_system_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::Trigger)

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

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.

clear_changes_information

Reset changes for all attributes.

conditions

conditions getter

conditions setter

conditions?

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.

conditions_assigned?
conditions_change

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

conditions_changed?
conditions_default

conditions's default value

Source
conditions_present?
conditions_removed?
conditions_was
conditions_will_change!

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

control_system

Retrieves the parent relationship

Source
control_system!

Allows filtering in cases of a Trigger belonging to a single ControlSystem

Source
control_system=(parent : ControlSystem)

Sets the parent relationship

Source
control_system_id

control_system_id getter

control_system_id=(value : String | Nil)

control_system_id setter

control_system_id_assigned?
control_system_id_change

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

control_system_id_changed?
control_system_id_default

control_system_id's default value

control_system_id_present?

Allows filtering in cases of a Trigger belonging to a single ControlSystem

control_system_id_removed?
control_system_id_was
control_system_id_will_change!

Include control_system_id 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.

debounce_period

debounce_period getter

debounce_period=(value : Int32)

debounce_period setter

debounce_period?

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.

debounce_period_assigned?
debounce_period_change

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

debounce_period_changed?
debounce_period_default

debounce_period's default value

Source
debounce_period_present?

In milliseconds

debounce_period_removed?
debounce_period_was
debounce_period_will_change!

Include debounce_period 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_trigger_instances
enable_webhook

enable_webhook getter

enable_webhook=(value : Bool)

enable_webhook setter

enable_webhook?

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.

enable_webhook_assigned?
enable_webhook_change

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

enable_webhook_changed?
enable_webhook_default

enable_webhook's default value

Source
enable_webhook_present?
enable_webhook_removed?
enable_webhook_was
enable_webhook_will_change!

Include enable_webhook 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.

important

important getter

important=(value : Bool)

important setter

important?

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.

important_assigned?
important_change

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

important_changed?
important_default

important's default value

Source
important_present?
important_removed?
important_was
important_will_change!

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

invoke_props

Base class for all Engine models

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.

persistent_attributes

Returns a Hash of all attributes that can be persisted.

primary_key

Base class for all Engine models

Source
primary_key_hash
reset_associations

Allows filtering in cases of a Trigger belonging to a single ControlSystem

Source
restore_attributes

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

supported_method?(method : String)
Source
supported_methods

supported_methods getter

supported_methods=(value : Array(String))

supported_methods setter

supported_methods?

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.

supported_methods_assigned?
supported_methods_change

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

supported_methods_changed?
supported_methods_default

supported_methods's default value

Source
supported_methods_present?
supported_methods_removed?
supported_methods_was
supported_methods_will_change!

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

table_name
trigger_instances
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.

Nested types