class

PlaceOS::Model::Storage

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: [do @ext_filter = ext_filter.map do |ext| if ext.starts_with?('.') ext = ext[1..] end ext.downcase end @mime_filter = mime_filter.map(&.downcase) self.access_secret = PlaceOS::Encryption.encrypt(access_secret, level: level, id: encryption_id) end] of Nil, after_save: [] of Nil, before_create: [do self.created_at = self.updated_at = Time.utc end, do rec = Model::Storage.find_by?(authority_id: authority_id, storage_type: storage_type.to_s.upcase, bucket_name: bucket_name) if rec.nil? else raise(Model::Error.new("authority_id need to be unique")) end 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 => (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, storage_type : PlaceOS::Model::Storage::Type | ActiveModel::Model::None = ::ActiveModel::Model::None.new, bucket_name : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, region : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, access_key : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, access_secret : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, authority_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, endpoint : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, is_default : Bool | ActiveModel::Model::None = ::ActiveModel::Model::None.new, ext_filter : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, mime_filter : Array(String) | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new)

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

storage_or_default(authority_id : String | Nil) : Storage
Source

Class methods

attributes

Returns all attribute keys.

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

Base class for all Engine models

Source
table_name

Instance methods

access_key

access_key getter

access_key=(value : String)

access_key setter

access_key?

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.

access_key_assigned?
access_key_change

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

access_key_changed?
access_key_default

access_key's default value

Source
access_key_present?
access_key_removed?
access_key_was
access_key_will_change!

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

access_secret

access_secret getter

access_secret=(value : String)

access_secret setter

access_secret?

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.

access_secret_assigned?
access_secret_change

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

access_secret_changed?
access_secret_default

access_secret's default value

Source
access_secret_present?
access_secret_removed?
access_secret_was
access_secret_will_change!

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

after_create

Base class for all Engine models

after_destroy

Base class for all Engine models

after_initialize(trusted : Bool)
after_save

Base class for all Engine models

after_update

Base class for all Engine models

apply_defaults

Generate code to apply default values

assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, storage_type : PlaceOS::Model::Storage::Type | Missing = Missing, bucket_name : String | Missing = Missing, region : String | Nil | Missing = Missing, access_key : String | Missing = Missing, access_secret : String | Missing = Missing, authority_id : String | Nil | Missing = Missing, endpoint : String | Nil | Missing = Missing, is_default : Bool | Missing = Missing, ext_filter : Array(String) | Missing = Missing, mime_filter : Array(String) | 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::Storage)

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.

authority_id

authority_id getter

authority_id=(value : String | Nil)

authority_id setter

authority_id_assigned?
authority_id_change

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

authority_id_changed?
authority_id_default

authority_id's default value

Source
authority_id_present?
authority_id_removed?
authority_id_was
authority_id_will_change!

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

before_create

Base class for all Engine models

before_destroy

Base class for all Engine models

before_save

Base class for all Engine models

before_update

Base class for all Engine models

bucket_name

bucket_name getter

bucket_name=(value : String)

bucket_name setter

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

bucket_name_assigned?
bucket_name_change

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

bucket_name_changed?
bucket_name_default

bucket_name's default value

Source
bucket_name_present?
bucket_name_removed?
bucket_name_was
bucket_name_will_change!

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

changed?

Check if any attributes have changed.

changed_attributes

Returns a Hash with all changed attributes.

changed_json(io : IO) : Nil

Serialize the set of changed attributes to JSON.

changed_json

Serialize the set of changed attributes to JSON.

changed_persist_attributes
changed_yaml(io : IO) : Nil

Serialize the set of changed attributes to YAML.

changed_yaml

Serialize the set of changed attributes to YAML.

check_file_ext(ext : String)
Source
check_file_mime(mime : String)
Source
clear_changes_information

Reset changes for all attributes.

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.

decrypt_secret
Source
endpoint

endpoint getter

endpoint=(value : String | Nil)

endpoint setter

endpoint_assigned?
endpoint_change

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

endpoint_changed?
endpoint_default

endpoint's default value

Source
endpoint_present?
endpoint_removed?
endpoint_was
endpoint_will_change!

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

ext_filter

ext_filter getter

ext_filter=(value : Array(String))

ext_filter setter

ext_filter?

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.

ext_filter_assigned?
ext_filter_change

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

ext_filter_changed?
ext_filter_default

ext_filter's default value

Source
ext_filter_present?
ext_filter_removed?
ext_filter_was
ext_filter_will_change!

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

id

id getter

id=(value : String | Nil)

id setter

id?
id_assigned?
id_change

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

id_changed?
id_default

id's default value

id_present?
id_removed?
id_was
id_will_change!

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

invoke_props

Base class for all Engine models

is_default

is_default getter

is_default=(value : Bool)

is_default setter

is_default?

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.

is_default_assigned?
is_default_change

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

is_default_changed?
is_default_default

is_default's default value

Source
is_default_present?
is_default_removed?
is_default_was
is_default_will_change!

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

mime_filter

mime_filter getter

mime_filter=(value : Array(String))

mime_filter setter

mime_filter?

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.

mime_filter_assigned?
mime_filter_change

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

mime_filter_changed?
mime_filter_default

mime_filter's default value

Source
mime_filter_present?
mime_filter_removed?
mime_filter_was
mime_filter_will_change!

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

persistent_attributes

Returns a Hash of all attributes that can be persisted.

primary_key

Base class for all Engine models

Source
primary_key_hash
region

region getter

region=(value : String | Nil)

region setter

region_assigned?
region_change

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

region_changed?
region_default

region's default value

Source
region_present?
region_removed?
region_was
region_will_change!

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

restore_attributes

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

secret_encrypted?

Determine if access_secret is encrypted

Source
storage_type

storage_type getter

storage_type=(value : PlaceOS::Model::Storage::Type)

storage_type setter

storage_type?

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.

storage_type_assigned?
storage_type_change

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

storage_type_changed?
storage_type_default

storage_type's default value

Source
storage_type_present?
storage_type_removed?
storage_type_was
storage_type_will_change!

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

table_name
updated_at

updated_at getter

updated_at=(value : Time)

updated_at setter

updated_at?

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

updated_at_assigned?
updated_at_change

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

updated_at_changed?
updated_at_default

updated_at's default value

updated_at_present?
updated_at_removed?
updated_at_was
updated_at_will_change!

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

validate_nilability

Validate that all non-nillable fields have values.

Nested types