about summary refs log tree commit diff
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/linked_user.rb17
-rw-r--r--app/models/status.rb8
-rw-r--r--app/models/user.rb3
3 files changed, 28 insertions, 0 deletions
diff --git a/app/models/linked_user.rb b/app/models/linked_user.rb
new file mode 100644
index 000000000..e049c6f77
--- /dev/null
+++ b/app/models/linked_user.rb
@@ -0,0 +1,17 @@
+# == Schema Information
+#
+# Table name: linked_users
+#
+#  id             :bigint(8)        not null, primary key
+#  user_id        :bigint(8)
+#  target_user_id :bigint(8)
+#  created_at     :datetime         not null
+#  updated_at     :datetime         not null
+#
+
+class LinkedUser < ApplicationRecord
+  belongs_to :user, inverse_of: :linked_users
+  belongs_to :target_user, class_name: 'User'
+
+  validates :user_id, uniqueness: { scope: :target_user_id }
+end
diff --git a/app/models/status.rb b/app/models/status.rb
index a6be93789..9f11e6d5d 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -306,6 +306,14 @@ class Status < ApplicationRecord
     update_status_stat!(key => [public_send(key) - 1, 0].max)
   end
 
+  def session=(value)
+    @session = value
+  end
+
+  def session
+    @session || nil
+  end
+
   after_create_commit  :increment_counter_caches
   after_destroy_commit :decrement_counter_caches
 
diff --git a/app/models/user.rb b/app/models/user.rb
index cbe62d189..479392642 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -75,6 +75,9 @@ class User < ApplicationRecord
   has_many :applications, class_name: 'Doorkeeper::Application', as: :owner
   has_many :backups, inverse_of: :user
 
+  has_many :user_links, class_name: 'LinkedUser', foreign_key: :target_user_id, dependent: :destroy, inverse_of: :user
+  has_many :linked_users, through: :user_links, source: :user
+
   has_one :invite_request, class_name: 'UserInviteRequest', inverse_of: :user, dependent: :destroy
   accepts_nested_attributes_for :invite_request, reject_if: ->(attributes) { attributes['text'].blank? }