class PlaceOS::Model::AiIncidentReport

Included Modules

Defined in:

placeos-models/ai_support/ai_incident_report.cr

Constant Summary

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: [] of Nil, after_destroy: [] of Nil}
Log = ::Log.for(self)
PRIMARY_KEY_TYPES = {:id => (Int64 | Nil)} of Nil => Nil

macro level key => type

PRIMARY_KEYS = [{:id}]

Constructors

Class Method Summary

Macro Summary

Instance Method Summary

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

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

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::ModelWithAutoKey)
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, primary_key primary_key

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

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

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

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

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) #

[View source]
def self.new(pull : JSON::PullParser) #

[View source]
def self.new(rs : DB::ResultSet) #

def self.new(incident_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, report_schema_version : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, status : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, classification : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, confidence : Float64 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, report_json : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, evidence_json : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, investigation_json : JSON::Any | ActiveModel::Model::None = ::ActiveModel::Model::None.new, decision_json : JSON::Any | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, markdown : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, created_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, updated_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new) #

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

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


Class Method Detail

def self.attributes : Array(Symbol) #

Returns all attribute keys.


def self.by_incident_id(id) #

Look up instances of this model dependent on the foreign key


[View source]
def self.changes(id : Int64 | 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.


def self.elastic #

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

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

def self.primary_key #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


[View source]
def self.table_name #

Macro Detail

macro scope(name, &block) #

Instance Method Detail

def __ai_incident : AiIncident | Nil #

def __ai_incident=(__ai_incident : AiIncident | Nil) #

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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def after_initialize(trusted : Bool) #

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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def ai_incident : AiIncident | Nil #

Retrieves the parent relationship


[View source]
def ai_incident! : AiIncident #

[View source]
def ai_incident=(parent : AiIncident) #

Sets the parent relationship


[View source]
def apply_defaults #

Generate code to apply default values


def assign_attributes(incident_id : String | Nil | Missing = Missing, report_schema_version : String | Missing = Missing, status : String | Missing = Missing, classification : String | Missing = Missing, confidence : Float64 | Missing = Missing, report_json : JSON::Any | Missing = Missing, evidence_json : JSON::Any | Missing = Missing, investigation_json : JSON::Any | Missing = Missing, decision_json : JSON::Any | Nil | Missing = Missing, markdown : String | Nil | Missing = Missing, id : Int64 | Nil | Missing = Missing, created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing) #

Assign to multiple attributes.


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

Assign to multiple attributes via HTTP::Params.


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

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::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


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 classification : String #

def classification=(value : String) #

def classification? : String | Nil #

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.


def classification_assigned? : Bool #

def classification_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 classification_changed? : Bool #

def classification_default : String #

#classification's default value


[View source]
def classification_present? : Bool #

def classification_removed? : Bool #

def classification_was : String | Nil #

def classification_will_change! : Nil #

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


def clear_changes_information #

Reset changes for all attributes.


def confidence : Float64 #

#confidence getter


def confidence=(value : Float64) #

#confidence setter


def confidence? : Float64 | Nil #

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.


def confidence_assigned? : Bool #

def confidence_change : Tuple(Float64 | Nil, Float64 | Nil) | Nil #

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


def confidence_changed? : Bool #

def confidence_default : Float64 #

#confidence's default value


[View source]
def confidence_present? : Bool #

def confidence_removed? : Bool #

def confidence_was : Float64 | Nil #

def confidence_will_change! : Nil #

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


def created_at : Time #

#created_at getter


def created_at=(value : Time) #

#created_at setter


def created_at? : Time | Nil #

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.


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_removed? : 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 decision_json : JSON::Any | Nil #

def decision_json=(value : JSON::Any | Nil) #

def decision_json_assigned? : Bool #

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

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


def decision_json_changed? : Bool #

def decision_json_default : JSON::Any | Nil #

#decision_json's default value


[View source]
def decision_json_present? : Bool #

def decision_json_removed? : Bool #

def decision_json_was : JSON::Any | Nil | Nil #

def decision_json_will_change! : Nil #

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


def evidence_json : JSON::Any #

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

def evidence_json? : JSON::Any | Nil #

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.


def evidence_json_assigned? : Bool #

def evidence_json_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 evidence_json_changed? : Bool #

def evidence_json_default : JSON::Any #

#evidence_json's default value


[View source]
def evidence_json_present? : Bool #

def evidence_json_removed? : Bool #

def evidence_json_was : JSON::Any | Nil #

def evidence_json_will_change! : Nil #

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


def id : Int64 | Nil #

#id getter


def id=(value : Int64 | Nil) #

#id setter


def id? #

def id_assigned? : Bool #

def id_change : Tuple(Int64 | Nil | Nil, Int64 | 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 : Int64 | Nil #

#id's default value


def id_present? : Bool #

def id_removed? : Bool #

def id_was : Int64 | Nil | Nil #

def id_will_change! : Nil #

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


def incident_id : String | Nil #

#incident_id getter


def incident_id=(value : String | Nil) #

Setters #incident_id setter


def incident_id? : String | Nil #

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.


def incident_id_assigned? : Bool #

def incident_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 incident_id_changed? : Bool #

def incident_id_default : String | Nil #

#incident_id's default value


def incident_id_present? : Bool #

def incident_id_removed? : Bool #

def incident_id_was : String | Nil | Nil #

def incident_id_will_change! : Nil #

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


def investigation_json : JSON::Any #

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

def investigation_json? : JSON::Any | Nil #

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.


def investigation_json_assigned? : Bool #

def investigation_json_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 investigation_json_changed? : Bool #

def investigation_json_default : JSON::Any #

#investigation_json's default value


[View source]
def investigation_json_present? : Bool #

def investigation_json_removed? : Bool #

def investigation_json_was : JSON::Any | Nil #

def investigation_json_will_change! : Nil #

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


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

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


def markdown : String | Nil #

#markdown getter


def markdown=(value : String | Nil) #

#markdown setter


def markdown_assigned? : Bool #

def markdown_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 markdown_changed? : Bool #

def markdown_default : String | Nil #

#markdown's default value


[View source]
def markdown_present? : Bool #

def markdown_removed? : Bool #

def markdown_was : String | Nil | Nil #

def markdown_will_change! : Nil #

Include #markdown 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 primary_key #
Description copied from class PlaceOS::Model::ModelWithAutoKey

Base class for all models which have auto-generated bigint as pk and doesn't require string based auto generated pk


[View source]
def primary_key_hash #

def report_json : JSON::Any #

#report_json getter


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

#report_json setter


def report_json? : JSON::Any | Nil #

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.


def report_json_assigned? : Bool #

def report_json_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 report_json_changed? : Bool #

def report_json_default : JSON::Any #

#report_json's default value


[View source]
def report_json_present? : Bool #

def report_json_removed? : Bool #

def report_json_was : JSON::Any | Nil #

def report_json_will_change! : Nil #

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


def report_schema_version : String #

def report_schema_version=(value : String) #

def report_schema_version? : String | Nil #

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.


def report_schema_version_assigned? : Bool #

def report_schema_version_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 report_schema_version_changed? : Bool #

def report_schema_version_default : String #

#report_schema_version's default value


[View source]
def report_schema_version_present? : Bool #

def report_schema_version_removed? : Bool #

def report_schema_version_was : String | Nil #

def report_schema_version_will_change! : Nil #

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


def reset_associations #

[View source]
def restore_attributes #

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


def status : String #

#status getter


def status=(value : String) #

#status setter


def status? : String | Nil #

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.


def status_assigned? : Bool #

def status_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 status_changed? : Bool #

def status_default : String #

#status's default value


[View source]
def status_present? : Bool #

def status_removed? : Bool #

def status_was : String | Nil #

def status_will_change! : Nil #

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


def table_name #

def updated_at : Time #

#updated_at getter


def updated_at=(value : Time) #

#updated_at setter


def updated_at? : Time | Nil #

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.


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_removed? : 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.