49 lines
1.1 KiB
Ruby
49 lines
1.1 KiB
Ruby
|
|
class Comment < Sequel::Model
|
||
|
|
include Sequel::ParanoidDelete
|
||
|
|
many_to_one :event
|
||
|
|
many_to_one :actioning_site, class: :Site
|
||
|
|
one_to_many :comment_likes
|
||
|
|
|
||
|
|
def dataset
|
||
|
|
if @_is_deleted_filter_set.nil?
|
||
|
|
@dataset = @dataset.filter is_deleted: false
|
||
|
|
@_is_deleted_filter_set = true
|
||
|
|
end
|
||
|
|
super
|
||
|
|
end
|
||
|
|
|
||
|
|
def liking_site_titles
|
||
|
|
comment_likes_dataset.select(:id, :actioning_site_id).all.collect do |comment_like|
|
||
|
|
comment_like.actioning_site_dataset.select(:username,:domain,:title).first.title
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def liking_site_usernames
|
||
|
|
comment_likes_dataset.select(:id, :actioning_site_id).all.collect do |comment_like|
|
||
|
|
comment_like.actioning_site_dataset.select(:username).first.username
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def site_likes?(site)
|
||
|
|
comment_likes_dataset.filter(actioning_site_id: site.id).count > 0
|
||
|
|
end
|
||
|
|
|
||
|
|
def site_like(site)
|
||
|
|
add_comment_like actioning_site_id: site.id
|
||
|
|
end
|
||
|
|
|
||
|
|
def site_unlike(site)
|
||
|
|
comment_likes_dataset.filter(actioning_site_id: site.id).delete
|
||
|
|
end
|
||
|
|
|
||
|
|
def toggle_site_like(site)
|
||
|
|
if site_likes? site
|
||
|
|
site_unlike site
|
||
|
|
false
|
||
|
|
else
|
||
|
|
site_like site
|
||
|
|
true
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|