You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.2 KiB

module CartoDB
# A shared entity is just a relating model that joins entities (currently only visualizations)
# shared but not owned by users.
# Initially there's no need to include full objects and is kept as ids only on purpose
class SharedEntity < Sequel::Model
# @param recipient_id String (uuid)
# @param recipient_type String From RECIPIENT_TYPE_xxxx constants
# @param entity_id String (uuid)
# @param entity_type String From ENTITY_TYPE_xxxx constants
# Allow mass-assignment of fields that compose the PK when using .new()
unrestrict_primary_key
ENTITY_TYPE_VISUALIZATION = 'vis'
RECIPIENT_TYPE_USER = 'user'
RECIPIENT_TYPE_ORGANIZATION = 'org'
RECIPIENT_TYPE_GROUP = 'group'
def validate
super
validates_presence([:recipient_id, :recipient_type, :entity_id, :entity_type])
validates_unique([:recipient_id, :entity_id])
errors.add(:entity_type, 'unsupported type') unless self.entity_type == ENTITY_TYPE_VISUALIZATION
end #validate
def before_save
super
self.updated_at = Time.now
end
def entity
@entity ||= CartoDB::Visualization::Member.new(id: entity_id).fetch
end
end
end