SpEcIaL SaUcE

This commit is contained in:
Kyle Drake 2015-08-27 21:12:52 -07:00
parent 985a2f8b60
commit 55dce7e80e
4 changed files with 40 additions and 1 deletions

View file

@ -46,6 +46,9 @@ def browse_sites_dataset
end end
case params[:sort_by] case params[:sort_by]
when 'special_sauce'
site_dataset.exclude! score: nil
site_dataset.order! :score.desc
when 'followers' when 'followers'
site_dataset = site_dataset.association_left_join :follows site_dataset = site_dataset.association_left_join :follows
site_dataset.select_all! :sites site_dataset.select_all! :sites

View file

@ -0,0 +1,11 @@
# IT'S MADE OUT OF FUCKING PEOPLE
Sequel.migration do
up {
DB.add_column :sites, :score, :integer
}
down {
DB.drop_column :sites, :score
}
end

View file

@ -1076,6 +1076,31 @@ class Site < Sequel::Model
end end
end end
def self.compute_scores
select(:id, :username, :created_at, :updated_at, :views).exclude(is_banned: true).exclude(is_crashing: true).exclude(is_nsfw: true).exclude(updated_at: nil).all.each do |s|
s.score = s.compute_score
s.save_changes validate: false
end
end
def compute_score
score = 0
begin
score += (Time.now - created_at) / 1.day
rescue => e
binding.pry
end
score -= ((Time.now - updated_at) / 1.day) * 2
score += 500 if (updated_at > 1.week.ago)
score -= 1000 if
follow_count = follows_dataset.count
score -= 1000 if follow_count == 0
score += follow_count * 100
score += profile_comments_dataset.count * 5
score += profile_commentings_dataset.count
score.to_i
end
def suggestions(limit=SUGGESTIONS_LIMIT, offset=0) def suggestions(limit=SUGGESTIONS_LIMIT, offset=0)
suggestions_dataset = Site.exclude(id: id).exclude(is_banned: true).exclude(is_nsfw: true).order(:views.desc, :updated_at.desc) suggestions_dataset = Site.exclude(id: id).exclude(is_banned: true).exclude(is_nsfw: true).order(:views.desc, :updated_at.desc)
suggestions = suggestions_dataset.where(tags: tags).limit(limit, offset).all suggestions = suggestions_dataset.where(tags: tags).limit(limit, offset).all
@ -1281,5 +1306,4 @@ class Site < Sequel::Model
end end
true true
end end
end end

View file

@ -26,6 +26,7 @@
<div class="select-Container"> <div class="select-Container">
<select name="sort_by" id="sort_by" class="input-Select"> <select name="sort_by" id="sort_by" class="input-Select">
<option value="followers" <%= params[:sort_by] == 'followers' ? 'selected' : '' %>>Most Followed</option> <option value="followers" <%= params[:sort_by] == 'followers' ? 'selected' : '' %>>Most Followed</option>
<option value="special_sauce" <%= params[:sort_by] == 'special_sauce' ? 'selected' : '' %>>Special Sauce (alpha)</option>
<option value="last_updated" <%= params[:sort_by] == 'last_updated' ? 'selected' : '' %>>Last Updated</option> <option value="last_updated" <%= params[:sort_by] == 'last_updated' ? 'selected' : '' %>>Last Updated</option>
<option value="supporters" <%= params[:sort_by] == 'supporters' ? 'selected' : '' %>>Neocities Supporters</option> <option value="supporters" <%= params[:sort_by] == 'supporters' ? 'selected' : '' %>>Neocities Supporters</option>
<option value="featured" <%= params[:sort_by] == 'featured' ? 'selected' : '' %>>Featured</option> <option value="featured" <%= params[:sort_by] == 'featured' ? 'selected' : '' %>>Featured</option>