class

PlaceOS::Model::Playlist::Revision

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: [:check_items] of Nil, after_save: [] of Nil, before_create: [do self.created_at = self.updated_at = Time.utc end, :remove_old_draft_revisions] 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 => (String | Nil)} of Nil => Nil

macro level key => type

PRIMARY_KEYS = [{:id}]

Constructors

from_json(string_or_io : String | IO, trusted : Bool = false) : self
from_json(string_or_io : String | IO, root : String, trusted : Bool = false) : self

Deserializes the given JSON in string_or_io into an instance of self, assuming the JSON consists of an JSON object with key root, and whose value is the value to deserialize. Will not deserialise from fields with mass_assign: false

class User < ActiveModel::Model
  attribute name : String
  attribute google_id : UUID, mass_assign: false
end

User.from_json(%({"main": {"name": "Jason", "google_id": "f6f70bfb-c882-446d-8758-7ce47db39620"}}), root: "main") # => #<User:0x103131b20 @name="Jason">
from_trusted_json(string_or_io : String | IO, root : String) : self
from_trusted_json(string_or_io : String | IO) : self

Serialize from a trusted JSON source

from_trusted_yaml(string_or_io : String | IO) : self

Serialize from a trusted YAML source

from_yaml(string_or_io : String | IO, trusted : Bool = false) : self
new(rs : DB::ResultSet)
new(created_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, updated_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, user_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, user_email : PlaceOS::Model::Email | ActiveModel::Model::None = ::ActiveModel::Model::None.new, user_name : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, approval_requested : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, requested_by_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, approved : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, approved_by_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, approved_by_name : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, approved_by_email : PlaceOS::Model::Email | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, items : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, playlist_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new)

Initialize PlaceOS::Model::Playlist::Revision from HTTP::Params.

Class methods

attributes

Returns all attribute keys.

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

Base class for all Engine models

Source
revisions(playlist_ids : Array(String), approved : Bool | Nil = true)

finds the latest approved playlist revision for each of the playlist ids provided

Source
table_name

Instance methods

__playlist
__playlist=(__playlist : Playlist | Nil)
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

approval_requested

approval_requested getter

approval_requested=(value : Bool)

approval_requested setter

approval_requested?

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.

approval_requested_assigned?
approval_requested_change

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

approval_requested_changed?
approval_requested_default

approval_requested's default value

Source
approval_requested_present?
approval_requested_removed?
approval_requested_was
approval_requested_will_change!

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

approved

approved getter

approved=(value : Bool)

approved setter

approved?

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.

approved_assigned?
approved_by_email

approved_by_email getter

approved_by_email=(value : PlaceOS::Model::Email | Nil)

approved_by_email setter

approved_by_email_assigned?
approved_by_email_change

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

approved_by_email_changed?
approved_by_email_default

approved_by_email's default value

Source
approved_by_email_present?
approved_by_email_removed?
approved_by_email_was
approved_by_email_will_change!

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

approved_by_id

approved_by_id getter

approved_by_id=(value : String | Nil)

approved_by_id setter

approved_by_id_assigned?
approved_by_id_change

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

approved_by_id_changed?
approved_by_id_default

approved_by_id's default value

Source
approved_by_id_present?
approved_by_id_removed?
approved_by_id_was
approved_by_id_will_change!

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

approved_by_name

approved_by_name getter

approved_by_name=(value : String | Nil)

approved_by_name setter

approved_by_name_assigned?
approved_by_name_change

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

approved_by_name_changed?
approved_by_name_default

approved_by_name's default value

Source
approved_by_name_present?
approved_by_name_removed?
approved_by_name_was
approved_by_name_will_change!

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

approved_change

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

approved_changed?
approved_default

approved's default value

Source
approved_present?
approved_removed?
approved_was
approved_will_change!

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

approver=(user)
Source
assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, user_id : String | Nil | Missing = Missing, user_email : PlaceOS::Model::Email | Missing = Missing, user_name : String | Missing = Missing, approval_requested : Bool | Missing = Missing, requested_by_id : String | Nil | Missing = Missing, approved : Bool | Missing = Missing, approved_by_id : String | Nil | Missing = Missing, approved_by_name : String | Nil | Missing = Missing, approved_by_email : PlaceOS::Model::Email | Nil | Missing = Missing, items : Array(String) | Missing = Missing, playlist_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::Playlist::Revision)

Assign to multiple attributes from a model object

assign_attributes_from_json(json, root : String)
assign_attributes_from_json(json)
assign_attributes_from_trusted_json(json, root : String)
assign_attributes_from_trusted_json(json)

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

assign_attributes_from_trusted_yaml(yaml)
assign_attributes_from_yaml(yaml)

Uses the YAML parser as JSON is valid YAML

attributes

Returns a Hash of all attribute values

attributes_tuple

Returns a NamedTuple of all attribute values.

before_create

Base class for all Engine models

before_destroy

Base class for all Engine models

before_save

Base class for all Engine models

before_update

Base class for all Engine models

changed?

Check if any attributes have changed.

changed_attributes

Returns a Hash with all changed attributes.

changed_json(io : IO) : Nil

Serialize the set of changed attributes to JSON.

changed_json

Serialize the set of changed attributes to JSON.

changed_persist_attributes
changed_yaml(io : IO) : Nil

Serialize the set of changed attributes to YAML.

changed_yaml

Serialize the set of changed attributes to YAML.

check_items
Source
clear_changes_information

Reset changes for all attributes.

clone
Source
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.

fetch_items
Source
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.

invoke_props

Base class for all Engine models

items

items getter

items=(value : Array(String))

items setter

items?

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.

items_assigned?
items_change

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

items_changed?
items_default

items's default value

Source
items_present?

update items to support either media item or an item_schedule based on the playlist distribution flag

items_removed?
items_was
items_will_change!

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

persistent_attributes

Returns a Hash of all attributes that can be persisted.

playlist

Retrieves the parent relationship

Source
playlist!
Source
playlist=(parent : Playlist)

Sets the parent relationship

Source
playlist_id

playlist_id getter

playlist_id=(value : String | Nil)

playlist_id setter

playlist_id_assigned?
playlist_id_change

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

playlist_id_changed?
playlist_id_default

playlist_id's default value

playlist_id_present?
playlist_id_removed?
playlist_id_was
playlist_id_will_change!

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

primary_key

Base class for all Engine models

Source
primary_key_hash
remove_old_draft_revisions
Source
requested_by_id

requested_by_id getter

requested_by_id=(value : String | Nil)

requested_by_id setter

requested_by_id_assigned?
requested_by_id_change

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

requested_by_id_changed?
requested_by_id_default

requested_by_id's default value

Source
requested_by_id_present?
requested_by_id_removed?
requested_by_id_was
requested_by_id_will_change!

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

reset_associations
Source
restore_attributes

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

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.

user=(user)
Source
user_email

user_email getter

user_email=(value : PlaceOS::Model::Email)

user_email setter

user_email?

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.

user_email_assigned?
user_email_change

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

user_email_changed?
user_email_default

user_email's default value

Source
user_email_present?
user_email_removed?
user_email_was
user_email_will_change!

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

user_id

user_id getter

user_id=(value : String | Nil)

user_id setter

user_id_assigned?
user_id_change

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

user_id_changed?
user_id_default

user_id's default value

Source
user_id_present?
user_id_removed?
user_id_was
user_id_will_change!

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

user_name

user_name getter

user_name=(value : String)

user_name setter

user_name?

NOTE: use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.

user_name_assigned?
user_name_change

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

user_name_changed?
user_name_default

user_name's default value

Source
user_name_present?
user_name_removed?
user_name_was
user_name_will_change!

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

validate_nilability

Validate that all non-nillable fields have values.

Nested types