parent
42160ed212
commit
bf0ce96925
@ -0,0 +1,33 @@
|
||||
# encoding: utf-8
|
||||
|
||||
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
|
||||
|
||||
ENTITY_TYPE_VISUALIZATION = 'vis'
|
||||
|
||||
RECIPIENT_TYPE_USER = 'user'
|
||||
RECIPIENT_TYPE_ORGANIZATION = 'org'
|
||||
|
||||
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
|
||||
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,9 @@
|
||||
Sequel.migration do
|
||||
up do
|
||||
add_column :organizations, :avatar_url, :text
|
||||
end
|
||||
|
||||
down do
|
||||
drop_column :organizations, :avatar_url
|
||||
end
|
||||
end
|
@ -0,0 +1,21 @@
|
||||
Sequel.migration do
|
||||
up do
|
||||
create_table :shared_entities do
|
||||
primary_key :id
|
||||
Uuid :user_id, null: false, :index => true
|
||||
Uuid :entity_id, null: false
|
||||
Text :type, null: false
|
||||
DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP
|
||||
DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP
|
||||
end
|
||||
|
||||
alter_table(:shared_entities) do
|
||||
add_index [:user_id, :entity_id], :unique => true
|
||||
end
|
||||
end
|
||||
|
||||
down do
|
||||
drop_table :shared_entities
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,11 @@
|
||||
Sequel.migration do
|
||||
up do
|
||||
add_column :permissions, :entity_id, :uuid
|
||||
add_column :permissions, :entity_type, :text
|
||||
end
|
||||
|
||||
down do
|
||||
drop_column :permissions, :entity_id
|
||||
drop_column :permissions, :entity_type
|
||||
end
|
||||
end
|
@ -0,0 +1,14 @@
|
||||
Sequel.migration do
|
||||
up do
|
||||
rename_column :shared_entities, :user_id, :recipient_id
|
||||
rename_column :shared_entities, :type, :entity_type
|
||||
add_column :shared_entities, :recipient_type, :text
|
||||
run "ALTER TABLE shared_entities ADD CONSTRAINT recipient_type_check CHECK (recipient_type IN ('user', 'org'));"
|
||||
end
|
||||
|
||||
down do
|
||||
drop_column :shared_entities, :recipient_type
|
||||
rename_column :shared_entities, :entity_type, :type
|
||||
rename_column :shared_entities, :recipient_id, :user_id
|
||||
end
|
||||
end
|
Loading…
Reference in new issue