neocities/models/comment.rb
2017-05-08 02:54:19 -07:00

48 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