forked from travis-ci/travis-core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
broadcast.rb
30 lines (26 loc) · 903 Bytes
/
broadcast.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require 'active_record'
class Broadcast < Travis::Model
belongs_to :recipient, polymorphic: true
class << self
def by_user(user)
sql = %(
recipient_type IS NULL OR
recipient_type = ? AND recipient_id IN(?) OR
recipient_type = ? AND recipient_id = ? OR
recipient_type = ? AND recipient_id IN (?)
)
active.where(sql, 'Organization', user.organization_ids, 'User', user.id, 'Repository', user.repository_ids)
end
def by_repo(repository)
sql = %(
recipient_type IS NULL OR
recipient_type = ? AND recipient_id = ? OR
recipient_type = ? AND recipient_id = ?
)
active.where(sql, 'Repository', repository.id, repository.owner_type, repository.owner_id)
end
def active
where('created_at >= ? AND (expired IS NULL OR expired <> ?)', 14.days.ago, true).order('id DESC')
end
end
end