v3: broadcasts - filter inactive broadcasts
This commit is contained in:
parent
1c4579008b
commit
0eb564388c
|
@ -1,5 +1,14 @@
|
||||||
module Travis::API::V3
|
module Travis::API::V3
|
||||||
class Models::Broadcast < Model
|
class Models::Broadcast < Model
|
||||||
|
EXPIRY_TIME = 14.days
|
||||||
|
|
||||||
belongs_to :recipient, polymorphic: true
|
belongs_to :recipient, polymorphic: true
|
||||||
|
scope :active, -> { where('created_at >= ? AND (expired IS NULL OR expired <> ?)', EXPIRY_TIME.ago, true) }
|
||||||
|
scope :inactive, -> { where('created_at < ? OR (expired = ?)', EXPIRY_TIME.ago, true) }
|
||||||
|
|
||||||
|
def active?
|
||||||
|
return false if expired?
|
||||||
|
created_at >= EXPIRY_TIME.ago
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,13 +1,35 @@
|
||||||
module Travis::API::V3
|
module Travis::API::V3
|
||||||
class Queries::Broadcasts < Query
|
class Queries::Broadcasts < Query
|
||||||
|
params :active, prefix: :broadcast
|
||||||
|
|
||||||
|
def initialize(*)
|
||||||
|
super
|
||||||
|
self.active = "true".freeze if active.nil?
|
||||||
|
end
|
||||||
|
|
||||||
def for_user(user)
|
def for_user(user)
|
||||||
query = %(
|
all.where(<<-SQL, 'Organization'.freeze, user.organization_ids, 'User'.freeze, user.id, 'Repository'.freeze, user.repository_ids)
|
||||||
recipient_type IS NULL OR
|
recipient_type IS NULL OR
|
||||||
recipient_type = ? AND recipient_id IN(?) OR
|
recipient_type = ? AND recipient_id IN(?) OR
|
||||||
recipient_type = ? AND recipient_id = ? OR
|
recipient_type = ? AND recipient_id = ? OR
|
||||||
recipient_type = ? AND recipient_id IN (?)
|
recipient_type = ? AND recipient_id IN (?)
|
||||||
)
|
SQL
|
||||||
Models::Broadcast.where(query, 'Organization', user.organization_ids, 'User', user.id, 'Repository', user.repository_ids)
|
end
|
||||||
|
|
||||||
|
def all
|
||||||
|
@all ||= filter(Models::Broadcast)
|
||||||
|
end
|
||||||
|
|
||||||
|
def filter(list)
|
||||||
|
active = list(self.active).map { |e| bool(e) }
|
||||||
|
|
||||||
|
if active.include? true
|
||||||
|
list = list.active unless active.include? false
|
||||||
|
else
|
||||||
|
list = list.inactive
|
||||||
|
end
|
||||||
|
|
||||||
|
list
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user