class

PlaceOS::Model::Asset

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: [:cleanup_bookings] 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(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
Source
new(pull : JSON::PullParser)
Source
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, identifier : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, serial_number : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, other_data : JSON::Any | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, barcode : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, name : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, client_ids : JSON::Any | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, map_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, bookable : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, accessible : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, zones : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, place_groups : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, assigned_to : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, assigned_name : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, features : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, images : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, notes : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, security_system_groups : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, parent_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, asset_type_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, purchase_order_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, zone_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new)
new(params : HTTP::Params | Hash(String, String) | Tuple(String, String))

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

Class methods

attributes

Returns all attribute keys.

by_asset_type_id(id)

Look up instances of this model dependent on the foreign key

Source
by_parent_id(id)

Look up instances of this model dependent on the foreign key

Source
by_purchase_order_id(id)

Look up instances of this model dependent on the foreign key

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

Base class for all Engine models

Source
table_name

Instance methods

__asset_type
__asset_type=(__asset_type : AssetType | Nil)
__parent

attribute parent_id : String? # nested resource like lockers and locker banks

__parent=(__parent : Asset | Nil)

attribute parent_id : String? # nested resource like lockers and locker banks

__purchase_order
__purchase_order=(__purchase_order : AssetPurchaseOrder | Nil)
__zone
__zone=(__zone : Zone | Nil)
accessible

accessible getter

accessible=(value : Bool)

accessible setter

accessible?

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.

accessible_assigned?
accessible_change

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

accessible_changed?
accessible_default

accessible's default value

Source
accessible_present?
accessible_removed?
accessible_was
accessible_will_change!

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

apply_defaults

Generate code to apply default values

asset_type

Retrieves the parent relationship

Source
asset_type!
Source
asset_type=(parent : AssetType)

Sets the parent relationship

Source
asset_type_id

asset_type_id getter

asset_type_id=(value : String | Nil)

asset_type_id setter

asset_type_id_assigned?
asset_type_id_change

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

asset_type_id_changed?
asset_type_id_default

asset_type_id's default value

asset_type_id_present?
asset_type_id_removed?
asset_type_id_was
asset_type_id_will_change!

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

assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, identifier : String | Nil | Missing = Missing, serial_number : String | Nil | Missing = Missing, other_data : JSON::Any | Nil | Missing = Missing, barcode : String | Nil | Missing = Missing, name : String | Nil | Missing = Missing, client_ids : JSON::Any | Nil | Missing = Missing, map_id : String | Nil | Missing = Missing, bookable : Bool | Missing = Missing, accessible : Bool | Missing = Missing, zones : Array(String) | Missing = Missing, place_groups : Array(String) | Missing = Missing, assigned_to : String | Nil | Missing = Missing, assigned_name : String | Nil | Missing = Missing, features : Array(String) | Missing = Missing, images : Array(String) | Missing = Missing, notes : String | Nil | Missing = Missing, security_system_groups : Array(String) | Missing = Missing, parent_id : String | Nil | Missing = Missing, asset_type_id : String | Nil | Missing = Missing, purchase_order_id : String | Nil | Missing = Missing, zone_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::Asset)

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

assigned_name

assigned_name getter

assigned_name=(value : String | Nil)

assigned_name setter

assigned_name_assigned?
assigned_name_change

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

assigned_name_changed?
assigned_name_default

assigned_name's default value

Source
assigned_name_present?
assigned_name_removed?
assigned_name_was
assigned_name_will_change!

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

assigned_to

assigned_to getter

assigned_to=(value : String | Nil)

assigned_to setter

assigned_to_assigned?
assigned_to_change

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

assigned_to_changed?
assigned_to_default

assigned_to's default value

Source
assigned_to_present?
assigned_to_removed?
assigned_to_was
assigned_to_will_change!

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

attributes

Returns a Hash of all attribute values

attributes_tuple

Returns a NamedTuple of all attribute values.

barcode

barcode getter

barcode=(value : String | Nil)

barcode setter

barcode_assigned?
barcode_change

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

barcode_changed?
barcode_default

barcode's default value

Source
barcode_present?
barcode_removed?
barcode_was
barcode_will_change!

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

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.

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.

client_ids

client_ids getter

client_ids=(value : JSON::Any | Nil)

client_ids setter

client_ids_assigned?
client_ids_change

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

client_ids_changed?
client_ids_default

client_ids's default value

Source
client_ids_present?
client_ids_removed?
client_ids_was
client_ids_will_change!

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

features

features getter

features=(value : Array(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?

queryable with AND and OR operators

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.

identifier

identifier getter

identifier=(value : String | Nil)

identifier setter

identifier_assigned?
identifier_change

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

identifier_changed?
identifier_default

identifier's default value

Source
identifier_present?
identifier_removed?
identifier_was
identifier_will_change!

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

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.

name

name getter

name=(value : String | Nil)

name setter

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.

notes

notes getter

notes=(value : String | Nil)

notes setter

notes_assigned?
notes_change

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

notes_changed?
notes_default

notes's default value

Source
notes_present?
notes_removed?
notes_was
notes_will_change!

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

other_data

other_data getter

other_data=(value : JSON::Any | Nil)

other_data setter

other_data_assigned?
other_data_change

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

other_data_changed?
other_data_default

other_data's default value

Source
other_data_present?
other_data_removed?
other_data_was
other_data_will_change!

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

parent

Retrieves the parent relationship

Source
parent!

attribute parent_id : String? # nested resource like lockers and locker banks

Source
parent=(parent : Asset)

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?

attribute parent_id : String? # nested resource like lockers and locker banks

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_groups

place_groups getter

place_groups=(value : Array(String))

place_groups setter

place_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.

place_groups_assigned?
place_groups_change

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

place_groups_changed?
place_groups_default

place_groups's default value

Source
place_groups_present?
place_groups_removed?
place_groups_was
place_groups_will_change!

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

primary_key

Base class for all Engine models

Source
primary_key_hash
purchase_order

Retrieves the parent relationship

Source
purchase_order!
Source
purchase_order=(parent : AssetPurchaseOrder)

Sets the parent relationship

Source
purchase_order_id

purchase_order_id getter

purchase_order_id=(value : String | Nil)

purchase_order_id setter

purchase_order_id_assigned?
purchase_order_id_change

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

purchase_order_id_changed?
purchase_order_id_default

purchase_order_id's default value

purchase_order_id_present?
purchase_order_id_removed?
purchase_order_id_was
purchase_order_id_will_change!

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

reset_associations

attribute parent_id : String? # nested resource like lockers and locker banks

Source
restore_attributes

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

security_system_groups

security_system_groups getter

security_system_groups=(value : Array(String))

security_system_groups setter

security_system_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_system_groups_assigned?
security_system_groups_change

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

security_system_groups_changed?
security_system_groups_default

security_system_groups's default value

Source
security_system_groups_present?
security_system_groups_removed?
security_system_groups_was
security_system_groups_will_change!

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

serial_number

serial_number getter

serial_number=(value : String | Nil)

serial_number setter

serial_number_assigned?
serial_number_change

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

serial_number_changed?
serial_number_default

serial_number's default value

Source
serial_number_present?
serial_number_removed?
serial_number_was
serial_number_will_change!

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

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

zone

Retrieves the parent relationship

Source
zone!
Source
zone=(parent : Zone)

Sets the parent relationship

Source
zone_id

zone_id getter

zone_id=(value : String | Nil)

zone_id setter

zone_id_assigned?
zone_id_change

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

zone_id_changed?
zone_id_default

zone_id's default value

zone_id_present?
zone_id_removed?
zone_id_was
zone_id_will_change!

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

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?
zones_removed?
zones_was
zones_will_change!

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

Nested types