class PlaceOS::Model::Driver

Included Modules

Defined in:

placeos-models/driver.cr

Constant Summary

CALLBACKS = {before_save: [:check_update_available] of Nil, after_save: [:update_modules] 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, :cleanup_modules] of Nil, after_destroy: [] of Nil}
Log = ::Log.for(self)
RECOMPILE_PREFIX = "RECOMPILE-"

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from module PlaceOS::Model::Utilities::SettingsHelper

all_settings : Hash(YAML::Any, YAML::Any) all_settings, settings : Array(Settings) settings, settings_at(encryption_level : Encryption::Level) settings_at, settings_at?(encryption_level : Encryption::Level) settings_at?, settings_hierarchy : Array(Settings) settings_hierarchy, settings_json : String settings_json

Instance methods inherited from class PlaceOS::Model::ModelBase

after_create after_create, after_destroy after_destroy, after_save after_save, after_update after_update, apply_defaults apply_defaults, assign_attributes(params : HTTP::Params | Hash(String, String) | Tuple(String, String))
assign_attributes(model : PlaceOS::Model::ModelBase)
assign_attributes
assign_attributes
, attributes attributes, attributes_tuple attributes_tuple, before_create before_create, before_destroy before_destroy, before_save before_save, before_update before_update, invoke_props invoke_props, persistent_attributes persistent_attributes, run_create_callbacks(&) run_create_callbacks, run_destroy_callbacks(&) run_destroy_callbacks, run_save_callbacks(&) run_save_callbacks, run_update_callbacks(&) run_update_callbacks

Constructor methods inherited from class PlaceOS::Model::ModelBase

new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
new(pull : JSON::PullParser)
new(rs : DB::ResultSet)
new

Class methods inherited from class PlaceOS::Model::ModelBase

attributes : Array(Symbol) attributes, auto_generate_id : Bool auto_generate_id, from_rs(rs : DB::ResultSet) from_rs, primary_key : Symbol primary_key

Instance methods inherited from module PlaceOS::Model::Associations

format_list_for_postgres(list : Enumerable(String)) : String format_list_for_postgres, reset_associations reset_associations

Class methods inherited from module PlaceOS::Model::Associations

format_list_for_postgres(list : Enumerable(String)) : String format_list_for_postgres

Macros inherited from module PlaceOS::Model::Associations

belongs_to(parent_class, dependent = :none, association_name = nil, foreign_key = nil, presence = false, pk_type = nil, serialize = true) belongs_to, has_many(child_class, collection_name = nil, dependent = :none, foreign_key = nil, serialize = false) has_many, has_one(child_class, dependent = :none, association_name = nil, presence = false) has_one

Constructor Detail

def self.from_json(string_or_io : String | IO, trusted : Bool = false) : self #

def 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">

def self.from_trusted_json(string_or_io : String | IO, root : String) : self #

def self.from_trusted_json(string_or_io : String | IO) : self #

Serialize from a trusted JSON source


def self.from_trusted_yaml(string_or_io : String | IO) : self #

Serialize from a trusted YAML source


def self.from_yaml(string_or_io : String | IO, trusted : Bool = false) : self #

def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) #

def self.new(pull : JSON::PullParser) #

def self.new(rs : DB::ResultSet) #

def self.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, json_schema : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, default_uri : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, default_port : Int32 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, role : PlaceOS::Model::Driver::Role | ActiveModel::Model::None = ::ActiveModel::Model::None.new, file_name : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, commit : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, compilation_output : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, module_name : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, ignore_connected : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, update_available : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, update_info : PlaceOS::Model::Driver::UpdateInfo | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, repository_id : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new) #

def self.new(params : HTTP::Params | Hash(String, String) | Tuple(String, String)) #

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


Class Method Detail

def self.attributes : Array(Symbol) #

Returns all attribute keys.


def self.auto_generate_id : Bool #

def self.by_repository_id(id) #

Look up instances of this model dependent on the foreign key


def self.changes(id : PrimaryKeyType = 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.


def self.elastic #

def self.from_rs(__temp_628 : DB::ResultSet) #

def self.on_error(err : Exception | IO::Error) #

def self.primary_key : Symbol #

def self.require_updates : Array(self) #

Returns the list of Drivers which has update available


def self.table_name #

Instance Method Detail

def __repository : Repository | Nil #

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


def __repository=(__repository : Repository | Nil) #

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


def after_create #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def after_destroy #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def after_initialize(trusted : Bool) #

def after_save #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def after_update #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def apply_defaults #

Generate code to apply default values


def assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, name : String | Missing = Missing, description : String | Missing = Missing, json_schema : JSON::Any | Missing = Missing, default_uri : String | Nil | Missing = Missing, default_port : Int32 | Nil | Missing = Missing, role : PlaceOS::Model::Driver::Role | Missing = Missing, file_name : String | Missing = Missing, commit : String | Missing = Missing, compilation_output : String | Nil | Missing = Missing, module_name : String | Missing = Missing, ignore_connected : Bool | Missing = Missing, update_available : Bool | Missing = Missing, update_info : PlaceOS::Model::Driver::UpdateInfo | Nil | Missing = Missing, repository_id : String | Missing = Missing, id : String | Nil | Missing = Missing) #

Assign to multiple attributes.


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

Assign to mulitple attributes via HTTP::Params.


def assign_attributes(model : PlaceOS::Model::Driver) #

Assign to multiple attributes from a model object


def assign_attributes_from_json(json, root : String) #

def assign_attributes_from_json(json) #

def assign_attributes_from_trusted_json(json, root : String) #

def assign_attributes_from_trusted_json(json) #

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


def assign_attributes_from_trusted_yaml(yaml) #

def assign_attributes_from_yaml(yaml) #

Uses the YAML parser as JSON is valid YAML


def attributes #

Returns a Hash of all attribute values


def attributes_tuple #

Returns a NamedTuple of all attribute values.


def before_create #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def before_destroy #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def before_save #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def before_update #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def changed? #

Check if any attributes have changed.


def changed_attributes #

Returns a Hash with all changed attributes.


def changed_json(io : IO) : Nil #

Serialize the set of changed attributes to JSON.


def changed_json : String #

Serialize the set of changed attributes to JSON.


def changed_persist_attributes #

def changed_yaml(io : IO) : Nil #

Serialize the set of changed attributes to YAML.


def changed_yaml : String #

Serialize the set of changed attributes to YAML.


def clear_changes_information #

Reset changes for all attributes.


def commit : String #

#commit getter


def commit=(value : String) #

#commit setter


def commit? : String | Nil #

Commit/version of driver to compile


def commit_assigned? : Bool #

def commit_change : Tuple(String | Nil, String | Nil) | Nil #

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


def commit_changed? : Bool #

def commit_default : String #

#commit's default value


def commit_present? : Bool #

Commit/version of driver to compile


def commit_was : String | Nil #

def commit_will_change! : Nil #

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


def compilation_output : String | Nil #

def compilation_output=(value : String | Nil) #

def compilation_output_assigned? : Bool #

def compilation_output_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

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


def compilation_output_changed? : Bool #

def compilation_output_default : String | Nil #

#compilation_output's default value


def compilation_output_present? : Bool #

Output of the last failed compilation


def compilation_output_was : String | Nil | Nil #

def compilation_output_will_change! : Nil #

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


def created_at : Time #

#created_at getter


def created_at=(value : Time) #

Setters #created_at setter


def created_at? : Time | Nil #

def created_at_assigned? : Bool #

def created_at_change : Tuple(Time | Nil, Time | Nil) | Nil #

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


def created_at_changed? : Bool #

def created_at_default : Time #

#created_at's default value


def created_at_present? : Bool #

def created_at_was : Time | Nil #

def created_at_will_change! : Nil #

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


def default_port : Int32 | Nil #

#default_port getter


def default_port=(value : Int32 | Nil) #

#default_port setter


def default_port=(port) #

def default_port_assigned? : Bool #

def default_port_change : Tuple(Int32 | Nil | Nil, Int32 | Nil | Nil) | Nil #

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


def default_port_changed? : Bool #

def default_port_default : Int32 | Nil #

#default_port's default value


def default_port_present? : Bool #

def default_port_was : Int32 | Nil | Nil #

def default_port_will_change! : Nil #

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


def default_uri : String | Nil #

#default_uri getter


def default_uri=(value : String | Nil) #

#default_uri setter


def default_uri=(uri) #

def default_uri_assigned? : Bool #

def default_uri_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

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


def default_uri_changed? : Bool #

def default_uri_default : String | Nil #

#default_uri's default value


def default_uri_present? : Bool #

def default_uri_was : String | Nil | Nil #

def default_uri_will_change! : Nil #

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


def description : String #

#description getter


def description=(value : String) #

#description setter


def description? : String | Nil #

def description_assigned? : Bool #

def description_change : Tuple(String | Nil, String | Nil) | Nil #

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


def description_changed? : Bool #

def description_default : String #

#description's default value


def description_present? : Bool #

def description_was : String | Nil #

def description_will_change! : Nil #

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


def destroy_settings_and_versions #

Encrypted yaml settings


def file_name : String #

#file_name getter


def file_name=(value : String) #

#file_name setter


def file_name? : String | Nil #

Path to driver, relative to repository directory


def file_name_assigned? : Bool #

def file_name_change : Tuple(String | Nil, String | Nil) | Nil #

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


def file_name_changed? : Bool #

def file_name_default : String #

#file_name's default value


def file_name_present? : Bool #

Path to driver, relative to repository directory


def file_name_was : String | Nil #

def file_name_will_change! : Nil #

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


def id : String | Nil #

#id getter


def id=(value : String | Nil) #

#id setter


def id? : String | Nil | Nil #
Description copied from class PgORM::Base

Same as #id but may return nil when the record hasn't been saved instead of raising.


def id_assigned? : Bool #

def id_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

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


def id_changed? : Bool #

def id_default : String | Nil #

#id's default value


def id_present? : Bool #

def id_was : String | Nil | Nil #

def id_will_change! : Nil #

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


def ignore_connected : Bool #

def ignore_connected=(value : Bool) #

def ignore_connected? : Bool | Nil #

Don't include this module in statistics or disconnected searches Might be a device that commonly goes offline (like a PC or Display that only supports Wake on Lan)


def ignore_connected_assigned? : Bool #

def ignore_connected_change : Tuple(Bool | Nil, Bool | Nil) | Nil #

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


def ignore_connected_changed? : Bool #

def ignore_connected_default : Bool #

#ignore_connected's default value


def ignore_connected_present? : Bool #

Don't include this module in statistics or disconnected searches Might be a device that commonly goes offline (like a PC or Display that only supports Wake on Lan)


def ignore_connected_was : Bool | Nil #

def ignore_connected_will_change! : Nil #

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


def invoke_props #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def json_schema : JSON::Any #

#json_schema getter


def json_schema=(value : JSON::Any) #

#json_schema setter


def json_schema? : JSON::Any | Nil #

def json_schema_assigned? : Bool #

def json_schema_change : Tuple(JSON::Any | Nil, JSON::Any | Nil) | Nil #

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


def json_schema_changed? : Bool #

def json_schema_default : JSON::Any #

#json_schema's default value


def json_schema_present? : Bool #

def json_schema_was : JSON::Any | Nil #

def json_schema_will_change! : Nil #

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


def module_name : String #

#module_name getter


def module_name=(value : String) #

#module_name setter


def module_name? : String | Nil #

Module instance configuration


def module_name_assigned? : Bool #

def module_name_change : Tuple(String | Nil, String | Nil) | Nil #

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


def module_name_changed? : Bool #

def module_name_default : String #

#module_name's default value


def module_name_present? : Bool #

Module instance configuration


def module_name_was : String | Nil #

def module_name_will_change! : Nil #

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


def modules #

Find the modules that rely on this driver


def name : String #

#name getter


def name=(value : String) #

#name setter


def name? : String | Nil #

def name_assigned? : Bool #

def name_change : Tuple(String | Nil, String | Nil) | Nil #

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


def name_changed? : Bool #

def name_default : String #

#name's default value


def name_present? : Bool #

def name_was : String | Nil #

def name_will_change! : Nil #

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


def persistent_attributes #

Returns a Hash of all attributes that can be persisted.


def process_update_info(info : UpdateInfo) #

def recompile(commit_hash : String | Nil = nil) #

Sets the commit hash of the driver for a recompile event


def recompile_commit? #

Returns the commit hash if the driver has a recompile commit hash


def repository : Repository | Nil #

Retrieves the parent relationship


def repository! : Repository #

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


def repository=(parent : Repository) #

Sets the parent relationship


def repository_id : String #

def repository_id=(value : String) #

def repository_id? : String | Nil #

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


def repository_id_assigned? : Bool #

def repository_id_change : Tuple(String | Nil, String | Nil) | Nil #

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


def repository_id_changed? : Bool #

def repository_id_default : String #

#repository_id's default value


def repository_id_present? : Bool #

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


def repository_id_was : String | Nil #

def repository_id_will_change! : Nil #

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


def reset_associations #

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


def restore_attributes #

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


#role getter


def role=(value : PlaceOS::Model::Driver::Role) #

#role setter


def role? : PlaceOS::Model::Driver::Role | Nil #

def role_assigned? : Bool #

def role_change : Tuple(PlaceOS::Model::Driver::Role | Nil, PlaceOS::Model::Driver::Role | Nil) | Nil #

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


def role_changed? : Bool #

def role_default : Role #

#role's default value


def role_present? : Bool #

def role_was : PlaceOS::Model::Driver::Role | Nil #

def role_will_change! : Nil #

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


def run_create_callbacks(&) #

Wrap a block with callbacks for the appropriate crud operation


def run_destroy_callbacks(&) #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def run_save_callbacks(&) #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def run_update_callbacks(&) #
Description copied from class PlaceOS::Model::ModelBase

Base class for all Engine models


def settings_and_versions #

Encrypted yaml settings


def settings_hierarchy : Array(Settings) #

def table_name #

def update_available : Bool #

def update_available=(value : Bool) #

def update_available? : Bool | Nil #

def update_available_assigned? : Bool #

def update_available_change : Tuple(Bool | Nil, Bool | Nil) | Nil #

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


def update_available_changed? : Bool #

def update_available_default : Bool #

#update_available's default value


def update_available_present? : Bool #

def update_available_was : Bool | Nil #

def update_available_will_change! : Nil #

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


def update_info : PlaceOS::Model::Driver::UpdateInfo | Nil #

#update_info getter


def update_info=(value : PlaceOS::Model::Driver::UpdateInfo | Nil) #

#update_info setter


def update_info_assigned? : Bool #

def update_info_change : Tuple(PlaceOS::Model::Driver::UpdateInfo | Nil | Nil, PlaceOS::Model::Driver::UpdateInfo | Nil | Nil) | Nil #

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


def update_info_changed? : Bool #

def update_info_default : UpdateInfo | Nil #

#update_info's default value


def update_info_present? : Bool #

def update_info_was : PlaceOS::Model::Driver::UpdateInfo | Nil | Nil #

def update_info_will_change! : Nil #

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


def updated_at : Time #

#updated_at getter


def updated_at=(value : Time) #

#updated_at setter


def updated_at? : Time | Nil #

def updated_at_assigned? : Bool #

def updated_at_change : Tuple(Time | Nil, Time | Nil) | Nil #

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


def updated_at_changed? : Bool #

def updated_at_default : Time #

#updated_at's default value


def updated_at_present? : Bool #

def updated_at_was : Time | Nil #

def updated_at_will_change! : Nil #

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


def validate_nilability #

Validate that all non-nillable fields have values.