class PlaceOS::Model::EventMetadata

Included Modules

Defined in:

placeos-models/event_metadata.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 if event_start_changed? || event_end_changed? linked_bookings = self.bookings if linked_bookings.size > 0 clashing = linked_bookings.select do |booking| booking.booking_start = event_start booking.booking_end = event_end booking.clashing? end if clashing.empty? else (Booking.where({:id => clashing.map(&.id)})).update_all({:rejected => true, :rejected_at => Time.utc.to_unix}) end Booking.where(event_id: id).update_all({:booking_start => event_start, :booking_end => event_end}) end end if cancelled_changed? && cancelled Booking.where(event_id: id).update_all({:rejected => true, :rejected_at => Time.utc.to_unix}) end end, do self.updated_at = Time.utc end] of Nil, after_update: [] of Nil, before_destroy: [:destroy_attendees, :destroy_bookings] of Nil, after_destroy: [] of Nil}
Log = ::Log.for(self)

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, 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::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, auto_generate_id : Bool auto_generate_id, from_rs(rs : DB::ResultSet) from_rs, primary_key : Symbol 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) #

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

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

def self.new(system_id : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, event_id : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, recurring_master_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, ical_uid : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, resource_master_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, host_email : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, resource_calendar : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, event_start : Int64 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, event_end : Int64 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, cancelled : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, ext_data : JSON::Any | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, setup_time : Int64 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, breakdown_time : Int64 | ActiveModel::Model::None = ::ActiveModel::Model::None.new, setup_event_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, breakdown_event_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, permission : PlaceOS::Model::EventMetadata::Permission | ActiveModel::Model::None = ::ActiveModel::Model::None.new, tenant_id : Int64 | 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::EventMetadata from HTTP::Params.


Class Method Detail

def self.attributes : Array(Symbol) #

Returns all attribute keys.


def self.auto_generate_id : Bool #

def self.by_event_ids(event_ids) #

def self.by_events_or_master_ids(event_ids, master_ids) #

def self.by_ext_data(field_name, value) #

def self.by_master_ids(master_ids) #

def self.by_tenant(tenant_id) #

def self.by_tenant_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_586 : DB::ResultSet) #

def self.is_ending_after(start_time) #

def self.is_starting_before(end_time) #

def self.migrate_recurring_metadata(system_id : String, recurrance : PlaceCalendar::Event, parent_metadata : EventMetadata) #

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

def self.primary_key : Symbol #

def self.table_name #

Macro Detail

macro scope(name, &block) #

Instance Method Detail

def __tenant : Tenant | Nil #

def __tenant=(__tenant : Tenant | 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 apply_defaults #

Generate code to apply default values


def assign_attributes(system_id : String | Missing = Missing, event_id : String | Missing = Missing, recurring_master_id : String | Nil | Missing = Missing, ical_uid : String | Missing = Missing, resource_master_id : String | Nil | Missing = Missing, host_email : String | Missing = Missing, resource_calendar : String | Missing = Missing, event_start : Int64 | Missing = Missing, event_end : Int64 | Missing = Missing, cancelled : Bool | Missing = Missing, ext_data : JSON::Any | Nil | Missing = Missing, setup_time : Int64 | Missing = Missing, breakdown_time : Int64 | Missing = Missing, setup_event_id : String | Nil | Missing = Missing, breakdown_event_id : String | Nil | Missing = Missing, permission : PlaceOS::Model::EventMetadata::Permission | Missing = Missing, tenant_id : Int64 | 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 mulitple attributes via HTTP::Params.


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

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

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

def breakdown_event_id : String | Nil #

def breakdown_event_id=(value : String | Nil) #

def breakdown_event_id_assigned? : Bool #

def breakdown_event_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 breakdown_event_id_changed? : Bool #

def breakdown_event_id_default : String | Nil #

#breakdown_event_id's default value


def breakdown_event_id_present? : Bool #

def breakdown_event_id_was : String | Nil | Nil #

def breakdown_event_id_will_change! : Nil #

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


def breakdown_time : Int64 #

def breakdown_time=(value : Int64) #

def breakdown_time? : Int64 | Nil #

def breakdown_time_assigned? : Bool #

def breakdown_time_change : Tuple(Int64 | Nil, Int64 | Nil) | Nil #

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


def breakdown_time_changed? : Bool #

def breakdown_time_default : Int64 #

#breakdown_time's default value


def breakdown_time_present? : Bool #

def breakdown_time_was : Int64 | Nil #

def breakdown_time_will_change! : Nil #

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


def cancelled : Bool #

#cancelled getter


def cancelled=(value : Bool) #

#cancelled setter


def cancelled? : Bool | Nil #

def cancelled_assigned? : Bool #

def cancelled_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 cancelled_changed? : Bool #

def cancelled_default : Bool #

#cancelled's default value


def cancelled_present? : Bool #

def cancelled_was : Bool | Nil #

def cancelled_will_change! : Nil #

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


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 created_at : Time #

#created_at getter


def created_at=(value : Time) #

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

def destroy_bookings #

def event_end : Int64 #

#event_end getter


def event_end=(value : Int64) #

#event_end setter


def event_end? : Int64 | Nil #

def event_end_assigned? : Bool #

def event_end_change : Tuple(Int64 | Nil, Int64 | Nil) | Nil #

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


def event_end_changed? : Bool #

def event_end_default : Int64 #

#event_end's default value


def event_end_present? : Bool #

def event_end_was : Int64 | Nil #

def event_end_will_change! : Nil #

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


def event_id : String #

#event_id getter


def event_id=(value : String) #

#event_id setter


def event_id? : String | Nil #

def event_id_assigned? : Bool #

def event_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 event_id_changed? : Bool #

def event_id_default : String #

#event_id's default value


def event_id_present? : Bool #

def event_id_was : String | Nil #

def event_id_will_change! : Nil #

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


def event_start : Int64 #

#event_start getter


def event_start=(value : Int64) #

#event_start setter


def event_start? : Int64 | Nil #

def event_start_assigned? : Bool #

def event_start_change : Tuple(Int64 | Nil, Int64 | Nil) | Nil #

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


def event_start_changed? : Bool #

def event_start_default : Int64 #

#event_start's default value


def event_start_present? : Bool #

def event_start_was : Int64 | Nil #

def event_start_will_change! : Nil #

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


def ext_data : JSON::Any | Nil #

#ext_data getter


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

#ext_data setter


def ext_data_assigned? : Bool #

def ext_data_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 ext_data_changed? : Bool #

def ext_data_default : JSON::Any | Nil #

#ext_data's default value


def ext_data_present? : Bool #

def ext_data_was : JSON::Any | Nil | Nil #

def ext_data_will_change! : Nil #

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


def for_event_instance?(event, client_id) #

def host_email : String #

#host_email getter


def host_email=(value : String) #

#host_email setter


def host_email? : String | Nil #

def host_email_assigned? : Bool #

def host_email_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 host_email_changed? : Bool #

def host_email_default : String #

#host_email's default value


def host_email_present? : Bool #

def host_email_was : String | Nil #

def host_email_will_change! : Nil #

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


def ical_uid : String #

#ical_uid getter


def ical_uid=(value : String) #

#ical_uid setter


def ical_uid? : String | Nil #

def ical_uid_assigned? : Bool #

def ical_uid_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 ical_uid_changed? : Bool #

def ical_uid_default : String #

#ical_uid's default value


def ical_uid_present? : Bool #

def ical_uid_was : String | Nil #

def ical_uid_will_change! : Nil #

Include #ical_uid 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? : Int64 | 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(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_was : Int64 | Nil | Nil #

def id_will_change! : Nil #

Include #id 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 linked_bookings : Array(Booking) | Nil #

def linked_bookings=(linked_bookings : Array(Booking) | Nil) #

#permission getter


def permission=(value : PlaceOS::Model::EventMetadata::Permission) #

#permission setter



def permission_assigned? : Bool #

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


def permission_changed? : Bool #

def permission_default : Permission #

#permission's default value


def permission_present? : Bool #

def permission_was : PlaceOS::Model::EventMetadata::Permission | Nil #

def permission_will_change! : Nil #

Include #permission 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 recurring_master_id : String | Nil #

def recurring_master_id=(value : String | Nil) #

def recurring_master_id_assigned? : Bool #

def recurring_master_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 recurring_master_id_changed? : Bool #

def recurring_master_id_default : String | Nil #

#recurring_master_id's default value


def recurring_master_id_present? : Bool #

def recurring_master_id_was : String | Nil | Nil #

def recurring_master_id_will_change! : Nil #

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


def render_linked_bookings=(render_linked_bookings : Bool) #

def render_linked_bookings? : Bool #

def reset_associations #

def resource_calendar : String #

def resource_calendar=(value : String) #

def resource_calendar? : String | Nil #

def resource_calendar_assigned? : Bool #

def resource_calendar_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 resource_calendar_changed? : Bool #

def resource_calendar_default : String #

#resource_calendar's default value


def resource_calendar_present? : Bool #

def resource_calendar_was : String | Nil #

def resource_calendar_will_change! : Nil #

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


def resource_master_id : String | Nil #

def resource_master_id=(value : String | Nil) #

def resource_master_id_assigned? : Bool #

def resource_master_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 resource_master_id_changed? : Bool #

def resource_master_id_default : String | Nil #

#resource_master_id's default value


def resource_master_id_present? : Bool #

this allows us to find the recurring master metadata from the resource calendar annoying how hard this is to find on MS Graph API.


def resource_master_id_was : String | Nil | Nil #

def resource_master_id_will_change! : Nil #

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


def restore_attributes #

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


def run_create_callbacks(&) #

Wrap a block with callbacks for the appropriate crud operation


def run_destroy_callbacks(&) #
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 run_save_callbacks(&) #
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 run_update_callbacks(&) #
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 set_ext_data(meta : JSON::Any) #

def setup_event_id : String | Nil #

def setup_event_id=(value : String | Nil) #

def setup_event_id_assigned? : Bool #

def setup_event_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 setup_event_id_changed? : Bool #

def setup_event_id_default : String | Nil #

#setup_event_id's default value


def setup_event_id_present? : Bool #

def setup_event_id_was : String | Nil | Nil #

def setup_event_id_will_change! : Nil #

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


def setup_time : Int64 #

#setup_time getter


def setup_time=(value : Int64) #

#setup_time setter


def setup_time? : Int64 | Nil #

def setup_time_assigned? : Bool #

def setup_time_change : Tuple(Int64 | Nil, Int64 | Nil) | Nil #

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


def setup_time_changed? : Bool #

def setup_time_default : Int64 #

#setup_time's default value


def setup_time_present? : Bool #

def setup_time_was : Int64 | Nil #

def setup_time_will_change! : Nil #

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


def system_id : String #

#system_id getter


def system_id=(value : String) #

Setters #system_id setter


def system_id? : String | Nil #

def system_id_assigned? : Bool #

def system_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 system_id_changed? : Bool #

def system_id_default : String #

#system_id's default value


def system_id_present? : Bool #

def system_id_was : String | Nil #

def system_id_will_change! : Nil #

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


def table_name #

def tenant : Tenant | Nil #

Retrieves the parent relationship


def tenant! : Tenant #

def tenant=(parent : Tenant) #

Sets the parent relationship


def tenant_id : Int64 | Nil #

#tenant_id getter


def tenant_id=(value : Int64 | Nil) #

#tenant_id setter


def tenant_id_assigned? : Bool #

def tenant_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 tenant_id_changed? : Bool #

def tenant_id_default : Int64 | Nil #

#tenant_id's default value


def tenant_id_present? : Bool #

def tenant_id_was : Int64 | Nil | Nil #

def tenant_id_will_change! : Nil #

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


def to_json(json : JSON::Builder) #

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.