class PlaceOS::Model::GroupUser

Overview

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).

Included Modules

Defined in:

placeos-models/group/user.cr

Constant Summary

CALLBACKS = {before_save: [do if (__temp_1490 = @user) && __temp_1490.new_record? __temp_1490.save self.user_id = __temp_1490.id.not_nil! end end, do if (__temp_1492 = @group) && __temp_1492.new_record? __temp_1492.save self.group_id = __temp_1492.id.not_nil! end end, :capture_history_state] of Nil, after_save: [:record_history_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: [do end, do end, :record_history_destroy] of Nil}

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).

PRIMARY_KEY_TYPES = {:user_id => String, :group_id => UUID} of Nil => Nil

macro level key => type

PRIMARY_KEYS = [{:user_id, :group_id}]

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from module PlaceOS::Model::GroupHistory::Mixin

group_history_group_id : UUID | Nil group_history_group_id, group_history_resource_id : String group_history_resource_id

Constructor Detail

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

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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 #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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 #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def self.new(created_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, updated_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, user_id : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, group_id : UUID | ActiveModel::Model::None = ::ActiveModel::Model::None.new, permissions : Int32 | ActiveModel::Model::None = ::ActiveModel::Model::None.new) #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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

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


Class Method Detail

def self.attributes : Array(Symbol) #

Returns all attribute keys.


def self.by_group_id(id) #

[View source]
def self.by_user_id(id) #

[View source]
def self.changes(id : Tuple(String, UUID) | 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.from_rs(__temp_2616 : DB::ResultSet) #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def self.primary_key #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


[View source]
def self.table_name #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


Instance Method Detail

def acting_user : PlaceOS::Model::User | Nil #

def acting_user=(acting_user : PlaceOS::Model::User | Nil) #

def after_create #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def after_destroy #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def after_initialize(trusted : Bool) #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def after_save #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def after_update #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def apply_defaults #

Generate code to apply default values


def assign_attributes(created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing, user_id : String | Missing = Missing, group_id : UUID | Missing = Missing, permissions : Int32 | 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::GroupUser) #

Assign to multiple attributes from a model object


def assign_attributes_from_json(json, root : String) #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def assign_attributes_from_json(json) #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def assign_attributes_from_trusted_json(json, root : String) #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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 #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def before_destroy #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def before_save #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def before_update #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def build_group(**attributes) : Group #

[View source]
def build_user(**attributes) : User #

[View source]
def captured_changed_fields : Array(String) #

def captured_changed_fields=(captured_changed_fields : Array(String)) #

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 #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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 create_group(**attributes) : Group #

[View source]
def create_group!(**attributes) : Group #

[View source]
def create_user(**attributes) : User #

[View source]
def create_user!(**attributes) : User #

[View source]
def created_at : Time #

#created_at getter


def created_at=(value : Time) #

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

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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 #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def created_at_default : Time #

#created_at's default value


def created_at_present? : Bool #

def created_at_removed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def created_at_was : Time | Nil #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def created_at_will_change! : Nil #

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


def group : Group #

[View source]
def group! : Group #

[View source]
def group=(record : Group) : Group #

[View source]
def group? : Group | Nil #

[View source]
def group_history_resource_type : String #

[View source]
def group_id : UUID #

#group_id getter


def group_id=(value : UUID) #

#group_id setter


def group_id? : UUID | 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 group_id_assigned? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def group_id_change : Tuple(UUID | Nil, UUID | Nil) | Nil #

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


def group_id_changed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def group_id_default : UUID #

#group_id's default value


[View source]
def group_id_present? : Bool #

def group_id_removed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def group_id_was : UUID | Nil #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def group_id_will_change! : Nil #

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


def id #

Always returns this record's primary key value, even when the primary key isn't named #id


def id? #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def invoke_props #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def permission_flags : Permissions #

[View source]
def permission_flags=(flags : Permissions) #

[View source]
def permissions : Int32 #

#permissions getter


def permissions=(value : Int32) #

#permissions setter


def permissions? : Int32 | 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 permissions_assigned? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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

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


def permissions_changed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def permissions_default : Int32 #

#permissions's default value


[View source]
def permissions_present? : Bool #

Stored as an Int32 bitmask. Use #permission_flags / #permission_flags= when working with the Permissions flags enum directly.


def permissions_removed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def permissions_was : Int32 | Nil #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def permissions_will_change! : Nil #

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


def persistent_attributes #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def primary_key #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


[View source]
def primary_key_hash #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def reload_group : Group #

[View source]
def reload_group? : Group | Nil #

[View source]
def reload_user : User #

[View source]
def reload_user? : User | Nil #

[View source]
def restore_attributes #

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


def table_name #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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 #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


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 #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def updated_at_default : Time #

#updated_at's default value


def updated_at_present? : Bool #

def updated_at_removed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def updated_at_was : Time | Nil #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def updated_at_will_change! : Nil #

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


def user : User #

[View source]
def user! : User #

[View source]
def user=(record : User) : User #

[View source]
def user? : User | Nil #

[View source]
def user_id : String #

#user_id getter


def user_id=(value : String) #

#user_id setter


def user_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 user_id_assigned? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def user_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 user_id_changed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def user_id_default : String #

#user_id's default value


[View source]
def user_id_present? : Bool #

def user_id_removed? : Bool #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def user_id_was : String | Nil #

Junction table: a user's membership in a group, with a permission bitmask. Composite primary key (user_id, group_id).


def user_id_will_change! : Nil #

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


def validate_nilability #

Validate that all non-nillable fields have values.


def was_new_record=(was_new_record : Bool) #

def was_new_record? : Bool #